操作とリソースの両方にワイルドカードを指定したIAMポリシー

IAMポリシーの全操作・全リソースへの許可を必要な権限に絞り、関連付けと実際のデフォルトバージョンを確認してください。

説明

IAMの許可ステートメントでAction: "*"とResource: "*"を併用すると、すべての操作とリソースを対象とする広い権限になります。業務に必要な範囲を超える権限は削除してください。実際の許可範囲は、ポリシーの関連付け、デフォルトバージョン、条件、明示的な拒否、アクセス許可の境界などによって異なります。

想定される影響

  • 広い権限が実際に適用されると、認証情報の盗難や誤用によってデータの変更・削除、リソース管理への影響が大きくなる可能性があります。
  • デフォルト以外のバージョンを修正しても、実際の権限は変わらない場合があります。一方、デフォルトバージョンの変更は関連付けられたすべての主体に影響します。

対処方法

  1. 関連付けられたユーザー・グループ・ロールとデフォルトバージョンを確認し、必要なサービス操作と対応するリソースARNに限定してください。リソース単位の制限に対応しない操作にはResource: "*"が必要な場合があるため、操作ごとの対応範囲を確認してください。
  2. 条件、明示的な拒否、アクセス許可の境界、ほかのポリシーを併せて確認してください。操作を複数のステートメントに分けるだけでは権限は減りません。
  3. 変更したバージョンを確認してから意図したデフォルトとして適用し、必要な操作が引き続き成功し、禁止する操作が拒否されることをテストしてください。

例

例ではポリシーをユーザーやロールに関連付けていません。Version: "2012-10-17"はポリシー言語のバージョンです。変更後のlog_group_arnには、必要な実際のロググループARNを指定してください。

変更前

yaml
- name: Create IAM Managed Policy
  community.aws.iam_managed_policy:
    policy_name: ManagedPolicy
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: "*"
          Resource: "*"
    make_default: false
    state: present

すべてのリソースに対するすべての操作を許可します。既存ポリシーでmake_default: falseを使って作成したバージョンは自動的にデフォルトになりませんが、新しいポリシーの最初のバージョンはデフォルトになります。

変更後

yaml
- name: Create IAM Managed Policy
  community.aws.iam_managed_policy:
    policy_name: ManagedPolicy
    policy:
      Version: "2012-10-17"
      Statement:
        - Effect: Allow
          Action: logs:CreateLogGroup
          Resource: "{{ log_group_arn }}"
    make_default: true
    state: present

必要なロググループ作成操作に絞り、このバージョンをデフォルトに指定します。適用前に関連付けられた主体、必要な操作、log_group_arnの範囲を確認してください。

参考資料