アクセス権限の境界が原因で発生するアクセス拒否の問題を解決するにはどうすればよいですか?

最終更新日: 2022 年 3 月 21 日

AWS のサービスにアクセスしようとしたときに、アクセス拒否または不正エラーが表示されました。AWS アカウントのアクセス拒否エラーのトラブルシューティング方法を教えてください。

簡単な説明

AWS Identity and Access Management (IAM) ポリシーが特定の条件要件を満たしていない場合、アクセスが拒否された、または許可されていないというエラーが表示されることがあります。まず、アカウントのサービスコントロールポリシー (SCP) を確認してから、リソースベースのポリシーに拒否がないことを確認します。それでもエラーが解決しない場合は、アクセス権限の境界が存在することが問題の原因である可能性があります。

アクセス権限の境界は、管理ポリシーを使用して、アイデンティティベースのポリシーが IAM エンティティ (ユーザーまたはロール) に付与できる最大アクセス権限を設定できるようにする機能です。エンティティにアクセス権限の境界を設定すると、そのエンティティはアイデンティティベースのポリシーとアクセス権限の境界の両方で許可されているアクションのみを実行できます。

注意: アクセス権限の境界はエンティティの最大パーミッションを設定しますが、これらのアクセス権限が付与されるわけではありません。

認証エラーのトラブルシューティングを行うには、次のステップに従います。

  • IAM ポリシーではアクションが許可されていてもアクセス権限の境界で許可されていないことを確認する
  • IAM コンソールを使用して、必要なすべてのアクションをアクセス権限の境界に含める
  • IAM ポリシーで「iam:PermissionsBoundar」条件キーを使用します。

解決方法

IAM ポリシーではアクションが許可されていてもアクセス権限の境界で許可されていないことを確認する

次の例は、IAM ポリシーでは許可されていても、アクセス権限の境界では許可されていないアクションを示しています。この例では、IAM ユーザーに USER_IAM_POLICY ポリシーがアタッチされています。

IAM policy:(USER_IAM_POLICY )
 “Effect”: “Allow”,
            “Action”: [
                “ec2:*”,
                “s3:*”
            ],

このポリシーにより、ユーザーは Amazon Elastic Compute Cloud (Amazon EC2) および Amazon Simple Storage Service (Amazon S3) サービスへのフルアクセスが付与されます。また、ユーザーには USER_PB_POLICY というアクセス権限の境界も設定されています。

Permissions Boundary:(USER_PB_POLICY)
 “Effect”: “Allow”,
            “Action”: [
                “cloudwatch:*”,
                “s3:*”
            ],

アクセス権限の境界は、ユーザーが実行できる最大アクセス権限を設定します。この例では、このアクセス権限の境界によって Amazon CloudWatch および Amazon S3 サービスへのフルアクセスが許可されます しかし、IAM ポリシーとアクセス権限の境界の両方で許可されるサービスは Amazon S3 のみなので、ユーザーは S3 にのみアクセスできます。ユーザーが Amazon EC2 にアクセスしようとすると、アクセス拒否エラーが表示されます。

このエラーを解決するには、アクセス権限の境界を編集して Amazon EC2 へのアクセスを許可します。

“Effect”: “Allow”,
            “Action”: [
                “cloudwatch:*”,
                “s3:*”,
                “ec2:*”
            ],

IAM コンソールを使用して、必要なすべてのアクションをアクセス権限の境界に含める

アクセス権限の境界を編集して、ユーザーが必要とするすべてのアクションを含めるには、次のステップに従います。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [ロール/ユーザー] を選択します。
  3. 編集する IAM エンティティを選択します。
  4. [Permissions boundary] セクションで、設定を確認します。アクセス権限の境界が設定されている場合は、アクセス権限の境界が設定されていることを意味します。このセクションには、IAM エンティティのアクセス権限の境界として使用される管理ポリシーの名前が一覧表示されます。
  5. JSON ポリシーを展開し、必要なアクションがアクセス権限の境界でホワイトリストに登録されているかどうかを確認します。アクションがホワイトリストに登録されていない場合は、IAM エンティティが必要とするすべてのアクションを許可するように JSON ポリシーを編集します。

ポリシーの編集の詳細については、「IAM ポリシーの編集」を参照してください。

IAM ポリシーで iam:PermissionsBoundary 条件キーを使用する

iam:PermissionsBoundary 条件キーを IAM ポリシーに追加します。この条件キーは、特定のポリシーが IAM エンティティにアクセス権限の境界としてアタッチされていることを確認します。

以下の例は、RestrictedRegionpermissionsBoundary という名前の IAM ポリシーを示しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EC2RestrictRegion",
            "Effect": “Allow”,
            "Action": "ec2:*” 
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": [
                        "us-east-1"
                   ]
                }
            }
        }

ポリシーを作成し、ユーザーを作成する委任管理者にポリシーをアタッチします。以下のサンプルポリシーを管理者にアタッチすると、管理者はRestrictedRegionPermissionsBoundary ポリシーがアタッチされた場合にのみ IAM ユーザーを作成できます。ポリシーがアタッチされていない管理者が IAM ユーザーを作成しようとすると、アクセス拒否エラーが表示されます。

{
            "Sid": "CreateUser",
            "Effect": "Allow",
            "Action": [
                "iam:CreateUser"
            ],
            "Resource": "arn:aws:iam::111222333444:user/test1*",
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::111222333444:policy/RestrictedRegionPermissionsBoundary"
                }
            }

新しいユーザーを作成するときに IAM ポリシー RestrictedRegionPermissionsBoundary をアクセス権限の境界として設定するには、以下のステップに従います。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで、[ユーザー] をクリックしてから、[ユーザーを追加] を選択します。
  3. 編集するユーザー名を入力し、AWS アクセスの種類を選択して、[次のステップ] を選択します。
  4. [アクセス権限の境界の設定] セクションを展開し、[アクセス権限の境界を使用して user の最大アクセス権限を制御する] を選択します。
  5. 検索フィールドに「RestrictedRegionPermissionsBoundary」と入力し、ポリシーのラジオボタンを選択します。
  6. [次のステップ: タグ] を選択します。
  7. 設定を確認してユーザーを作成します。

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


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