すべての操作とリソースを許可するIAMポリシー

すべての操作・リソースを許可するIAMポリシーを、実際の処理に必要な権限に限定してください。

説明

Effect: Allow、Action: "*"、Resource: "*"の組み合わせは、非常に広い権限を与える可能性があります。実際の権限には関連付け先、条件、アクセス許可の境界、明示的な拒否なども影響します。必要な操作とリソースを確認し、不要な権限を削除してください。

想定される影響

関連付けられたユーザーやロールが侵害されると、広い権限でリソースを読み取り、変更、削除される可能性があります。影響は実際に有効な権限全体によって異なります。

対処方法

  • 必要なAPIと対応するリソースARNに限定してください。リソース単位の制限に対応しない必要な操作は分け、使用できる条件を検討してください。
  • 関連付けたポリシーと利用履歴を確認し、変更後に必要な操作が成功し、不要な操作が拒否されることをテストしてください。

例

同じ既存ロールに関連付けるポリシーの構成案です。ApplicationRoleNameには実際のロール名を、変更後のQueueArnには処理が必要なキューのARNを指定してください。

変更前

yaml
Parameters:
  ApplicationRoleName:
    Type: String
Resources:
  mypolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: mygrouppolicy
      Roles:
        - !Ref ApplicationRoleName
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Action: ["*"]
            Resource: "*"

すべての操作とリソースを許可します。ロールに必要な範囲を超えていないか確認してください。

変更後

yaml
Parameters:
  ApplicationRoleName:
    Type: String
  QueueArn:
    Type: String
Resources:
  mypolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: mygrouppolicy
      Roles:
        - !Ref ApplicationRoleName
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Action:
              - sqs:ReceiveMessage
              - sqs:DeleteMessage
            Resource: !Ref QueueArn

このステートメントは、指定したキューのメッセージ受信・削除だけを許可します。クライアントにほかのAPIが必要なら個別に確認し、ほかのポリシーによる権限も確認してください。

参考資料