説明
IAMの許可ステートメントでAction: "*"とResource: "*"を併用すると、すべての操作とリソースを対象とする広い権限になります。業務に必要な範囲を超える権限は削除してください。実際の許可範囲は、ポリシーの関連付け、デフォルトバージョン、条件、明示的な拒否、アクセス許可の境界などによって異なります。
想定される影響
- 広い権限が実際に適用されると、認証情報の盗難や誤用によってデータの変更・削除、リソース管理への影響が大きくなる可能性があります。
- デフォルト以外のバージョンを修正しても、実際の権限は変わらない場合があります。一方、デフォルトバージョンの変更は関連付けられたすべての主体に影響します。
対処方法
- 関連付けられたユーザー・グループ・ロールとデフォルトバージョンを確認し、必要なサービス操作と対応するリソースARNに限定してください。リソース単位の制限に対応しない操作には
Resource: "*"が必要な場合があるため、操作ごとの対応範囲を確認してください。 - 条件、明示的な拒否、アクセス許可の境界、ほかのポリシーを併せて確認してください。操作を複数のステートメントに分けるだけでは権限は減りません。
- 変更したバージョンを確認してから意図したデフォルトとして適用し、必要な操作が引き続き成功し、禁止する操作が拒否されることをテストしてください。
例
例ではポリシーをユーザーやロールに関連付けていません。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の範囲を確認してください。