Uncategorized

iamkmss3

以下では 「何から見ればよいか」→「どこでハマりやすいか」→「どう検証するか」 の3段階で、
IAM ポリシー/KMS キーポリシー/S3 バケットポリシーをトラブルシューティングするときの鉄板フローを整理しました。
―ハマったときに“順番どおりに辿るチェックリスト”として使ってください。


0⃣ 共通:ポリシー評価の大原則(まず暗記)

  1. 明示 Deny が最優先(他が許可でも即ブロック)
  2. 次に “許可ポリシー”(複数ある場合は OR 条件)
  3. 何も許可されなければデフォルト Implicit Deny

└ まずは「どこかに明示 Deny が混ざっていないか?」を最古参バグチェックに。


1⃣ IAM ポリシー

ステップチェックポイントよくある落とし穴検証コマンド/ツール
① 該当プリンシパル特定ユーザ? ロール? フェデレーション経由?AssumeRole 先でポリシーが切り替わるのを忘れるaws sts get-caller-identity
② ポリシーの種類を洗い出しインライン / 管理ポリシー / セッションポリシー / SCPセッションポリシー(一時認証)の存在を見逃すAWS Console「Permissions」タブ or aws iam list-attached-user-policies
③ 明示 Deny 検索"Effect":"Deny" を全文検索Organizations SCP で Deny されているIAM Policy Simulator/Access Analyzer
④ 条件ブロックaws:PrincipalArn / aws:RequestedRegion などaws:MultiFactorAuthPresent が falsePolicy Simulator “Override STS” でテスト
⑤ セッションの制約ExternalId, SourceIP, MFAaws:SourceIp 書式ミス (VPC CIDR でなく /32 など)CloudTrail → Event JSON

2⃣ KMS キーポリシー + Grants

ステップチェックポイントよくある落とし穴検証コマンド/ツール
① キーポリシー vs IAM ポリシーどちらも必須(AND 条件)キーポリシーに root しか許可がないaws kms get-key-policy
② 暗号化/復号 API誰が EncryptDecrypt を呼ぶ?Lambda 等の実行ロールをキーポリシーに追加忘れCloudTrail – Decrypt 失敗イベント
③ Grant の有無一時委譲 (Grant) は即時適用Grant ID を Revoke/Retire し忘れaws kms list-grants
④ Encryption Contextkms:EncryptionContext:* 条件一致S3 が自動付与する aws:s3:arn と不一致失敗時 CloudTrail → EncryptionContextMismatch
⑤ リージョンCMK はリージョン単位クロスリージョン複合化は不可CMK ARN に含まれるリージョン確認

3⃣ S3 バケットポリシー

ステップチェックポイントよくある落とし穴検証コマンド/ツール
① Block Public Access (BPA)アカウントorバケット単位の4フラグBPAで上書き Deny → ポリシー調整しても公開されないS3 コンソール → “パブリックアクセス設定”
② ポリシー主体"Principal":"*" or ARN 指定?CloudFront OAI/OAC の ARN ミスaws s3api get-bucket-policy
③ 条件ブロックaws:SourceVpce, aws:SourceIpVPCE ID と VPCE エンドポイント名の混同Access Analyzer for S3
④ 暗号化条件s3:x-amz-server-side-encryptionKMS Mandatory 条件で PUT 失敗CloudTrail Data Event for S3
⑤ MFA Delete / Versioning状態を確認MFA Delete = ルートのみ変更可aws s3api get-bucket-versioning

4⃣ 共通デバッグテクニック

ツール使い所コマンド例 / UI
IAM Policy Simulator単一プリンシパル×アクションを即検証コンソール or aws iam simulate-custom-policy
Access Analyzerクロスアカウント公開を検知S3 / KMS / IAM / SNS など対応
CloudTrail Insights失敗呼び出しの急増を検知“ErrorRateIncrease” Insight
AWS CLI --debug署名バージョン/リージョンミス発見aws s3 ls s3://bucket --debug
STS Decode-Authorization-Messageアクセス拒否の内部理由取得aws sts decode-authorization-message --encoded-message …

5⃣ 最終チェックリスト(印刷推奨)

  • 明示 Deny が混ざっていないか(SCP/BPA 含む)
  • プリンシパルが正しいか(AssumeRole 後の ARN か?)
  • 条件キーのタイプミス/桁数ミス(IP/CIDR, VPCE, MFA)
  • キーポリシーと IAM ポリシー両方で許可しているか(KMS)
  • S3 BPA が “オン” でないか
  • 暗号化コンテキストが一致しているか(KMS+S3)
  • テストは Policy Simulator → CLI 実呼 → CloudTrail 確認 の順で

この順序で辿れば、ポリシー系の “アクセス拒否迷路” から脱出しやすくなります。試験でも実務でも同じなので、ぜひ手元に置いてご活用ください。