アクセス許可の境界を使用して IAM ユーザーとロールの範囲を限定し、権限の昇格を防ぐにはどうすればよいですか?

最終更新日: 2020 年 9 月 11 日

AWS Identity and Access Management (IAM) の管理者アクセスを制限し、権限の昇格を防ぐためのアクセス許可の境界ポリシーを作成する方法を教えてください。

解決方法

次の IAM ポリシーの例を使用して、これらの制限を指定します。

  • IAM 管理者によって作成された IAM プリンシパルは、AWS リソースへのフルアクセスを持つことができます。アクセス許可の境界は独自のアクセス許可を提供しないため、AWS リソースへのフルアクセスはアイデンティティベースのポリシーによって異なります。
  • このポリシーでは、IAM プリンシパルによる AWS 請求とコスト管理関連サービスへのアクセスが制限されます。
  • IAM プリンシパルは、制限されたサービスにアクセスするための独自のアクセス許可を許可するようにアクセス許可の境界を変更することはできません。
  • IAM 管理者は、すでに持っている以上の権限を持つ IAM プリンシパルを作成することはできません。
  • IAM 管理者によって作成された IAM プリンシパルは、IAM 管理者よりも多くのアクセス許可を持つ IAM プリンシパルを作成することはできません。

このポリシーを ScopePermissionsという名前のマネージドポリシーとして保存します。YourAccount_ID をアカウント ID に置き換えます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAdminAccess",
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        },
        {
            "Sid": "DenyAccessToCostAndBilling",
            "Effect": "Deny",
            "Action": [
                "account:*",
                "aws-portal:*",
                "savingsplans:*",
                "cur:*",
                "ce:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DenyPermBoundaryIAMPolicyAlteration",
            "Effect": "Deny",
            "Action": [
                "iam:DeletePolicy",
                "iam:DeletePolicyVersion",
                "iam:CreatePolicyVersion",
                "iam:SetDefaultPolicyVersion"
            ],
            "Resource": [
                "arn:aws:iam::YourAccount_ID:policy/ScopePermissions"
            ]
        },
        {
            "Sid": "DenyRemovalOfPermBoundaryFromAnyUserOrRole",
            "Effect": "Deny",
            "Action": [
                "iam:DeleteUserPermissionsBoundary",
                "iam:DeleteRolePermissionsBoundary"
            ],
            "Resource": [
                "arn:aws:iam::YourAccount_ID:user/*",
                "arn:aws:iam::YourAccount_ID:role/*"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::YourAccount_ID:policy/ScopePermissions"
                }
            }
        },
        {
            "Sid": "DenyAccessIfRequiredPermBoundaryIsNotBeingApplied",
            "Effect": "Deny",
            "Action": [
                "iam:PutUserPermissionsBoundary",
                "iam:PutRolePermissionsBoundary"
            ],
            "Resource": [
                "arn:aws:iam::YourAccount_ID:user/*",
                "arn:aws:iam::YourAccount_ID:role/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::YourAccount_ID:policy/ScopePermissions"
                }
            }
        },
        {
            "Sid": "DenyUserAndRoleCreationWithOutPermBoundary",
            "Effect": "Deny",
            "Action": [
                "iam:CreateUser",
                "iam:CreateRole"
            ],
            "Resource": [
                "arn:aws:iam::YourAccount_ID:user/*",
                "arn:aws:iam::YourAccount_ID:role/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::YourAccount_ID:policy/ScopePermissions"
                }
            }
        }
    ]
}

このポリシーをテストするには:

1.    Bob という名前の新しい IAM ユーザーを作成します。

2.    AdministratorAccess ポリシーを直接 Bob にアタッチし、アクセス許可の境界として ScopePermissions をアタッチします。

3.    Bob として AWS マネジメントコンソールにログインします。そして、次のことを試みます。

  • AWS 請求とコスト管理のサービスの Cost Explorer にアクセスします。
  • Bob からアクセス許可の境界を削除します。
  • アクセス許可の境界なしで新しい IAM ユーザーとロールを作成します。
  • アクセス許可の境界を適用した Alice という名前の IAM ユーザーを作成し、AdministratorAccess ポリシーをアイデンティティベースのポリシーとして Aliceにアタッチします。

4.    Alice として AWS マネジメントコンソールにログインし、以下を試みます。

  • AWS 請求とコスト管理のサービスの Cost Explorer にアクセスします。
  • Alice からアクセス許可の境界を削除します。
  • アクセス許可の境界なしで新しい IAM ユーザーとロールを作成します。

アクセス許可の境界により、以下のことが保証されます。

  • Bob は、アクセス許可の境界である ScopePermissions をアタッチせずに新しいユーザーを作成することはできません。
  • Bob が作成した IAM ユーザーおよびロールには、Bob と同じアクセス許可か、それよりも弱いアクセス許可が付与されます。
  • BobAlice は、ポリシーのデフォルトバージョンの削除など、アクセス許可の境界をソースとする IAM ポリシーを変更することはできません。
  • BobAlice は、自身または他のユーザーから適用されたアクセス許可の境界を変更または削除することはできません。
  • 制限されたサービスへのアクセスは、アクセス許可の境界によって拒否されます。
  • AliceBob と同じアクセス許可を有しており、権限の昇格が防止されます。Alice が新しい IAM ユーザーを作成する場合、新しいユーザーに Bob を超えるアクセス許可が付与されることはありません。このアクセス許可の境界により、アクセス許可の境界なしで IAM プリンシパルが作成されることはなくなり、権限の昇格が防止されます。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?