Site icon Mr. 沙先生

AWS Organizations SCPs 限制 Linked-Account 允許 IAM 白名單存取 Dynamodb

應因公司資安政策,希望資料庫類型的 DynamoDB 是由 DBA 協助控管,而每個 Linked-Account Owner 能存取除了 DynamoDB 以外的服務,包含 IAM。

基本上會有幾個情境必須考量:

為了產品可以快速開發,每個 Linked-Account Owner 擁有 IAMFullAccess 這條權限基本上就無敵了,可以自己到 IAM Policy 增加權限

如果在 Linked-Account 這一層無解,就要到更高層級 Master-Account 的 Organization SCPs 處理,Organization SCPs 是比 Linked-Account Root 更高層級的 Policy level,如果以權限分層來看:

Organization SCPs > Linked-Root – Linked-IAM

所以 Organization SCPs 依照此情境就必須做到以下:

Organization SCPs 設定

在建立 Organization SCPs 之前,建議先建立 OU (Organizational units) 把帳號分類會比較好管理,以 DatabaseControlList 為例,把需要管理的 Account-Id 移進去這個 OU

而 Organization SCPs 可以參考以下 Policy 設計:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAllService",
            "Effect": "Allow",
            "Action": "*",
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "DefaultDenyDatabasesAction",
            "Effect": "Deny",
            "Action": [ 
                "dynamodb:ListBackups",
                "dynamodb:Create*",
                "dynamodb:DeleteBackup",
                "dynamodb:DeleteTable",
                "dynamodb:DeleteTableReplica",
                "dynamodb:RestoreTable*",
                "dynamodb:UpdateContinuousBackups",
                "dynamodb:UpdateContributorInsights",
                "dynamodb:UpdateGlobalTable",
                "dynamodb:UpdateGlobalTableSettings",
                "dynamodb:UpdateTable",
                "dynamodb:UpdateTableReplicaAutoScaling"
            ],
            "Resource": [
                "*"
            ]
            "Condition": {
                "ArnNotLike": {
                    "aws:PrincipalARN": [
                        "arn:aws:iam::*:role/DbaRole"
                    ]
                }
            }
        },
        {
            "Sid": "DenyDatabasesAction",
            "Effect": "Deny",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:GetRecords"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ArnNotLike": {
                    "aws:PrincipalARN": [
                        "arn:aws:iam::123123123123:role/WebRole",
                        "arn:aws:iam::123123123123:user/shazi7804"
                    ]
                }
            }
        }
    ]
}

AWS Policy 原則:只要有 Deny 就 Deny

透過這條 Policy 就等於下了天條,不在 aws:PrincipalARN 的 IAM 都不能存取 DynamoDB。

限制

透過白名單限制的方法可以透過自動化機制的申請流程開放,但必須考量 “白名單” 的維護問題:

測試

轉到 Linked-Account 這邊,測試幾種使用者情境:

參考

Exit mobile version