mcpField
A
aws-iam

aws-iam

github.com/awsセキュリティ3.3k10.4k 回インストール今日更新
リポジトリ

aws-iam について

aws-iamは、AWS IAMの質問に答えるAIエージェント向けのリファレンススキルです。よくある誤りの検証済み訂正をまとめ、正確な情報はAWS公式ドキュメントで確認するよう案内します。

主な機能

  1. 01検証済みのIAMの例外事項
  2. 02ロール管理のリファレンス
  3. 03IAMポリシー生成の指針
  4. 04AWSドキュメントによる確認

活用シーン

  1. 01IAMロールの信頼関係と権限の確認
  2. 02ソースコードやTerraformプランからのポリシー生成
  3. 03STS、Organizations、MFA関連の動作確認

MCP 対応

AWS操作にはAWS MCPサーバーを推奨しますが、AWS CLIまたはSDKも代替手段として利用できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aws/agent-toolkit-for-aws --skill aws-iam

インストール後、Claude Code で/aws-iamを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
aws-iam-policy-generation.md
aws-iam-role-management.md
common-pitfalls.md
service-authorization.md

詳細

AWS IAM — よくある落とし穴

このスキルについて

このスキルには、AI エージェントが IAM について頻繁に誤解する点を修正するための検証済み情報が含まれています。IAM を網羅的に解説するものではありません。IAM の詳細なガイダンスについては、AWS のドキュメントを検索してください。IAM に関する質問に回答する際は、事前学習の知識に頼るのではなく、具体的な主張(制限、クォータ、正確な API 名、例外的な動作)を AWS の公式ドキュメントで確認してください。幅広く検索するより、既知のドキュメント URL を取得することを優先してください。記憶と公式ドキュメントが食い違う場合は、公式ドキュメントを信頼してください。

よくあるワークフロー

AWS の操作には、利用できる中で最適なツールを使用してください。AWS MCP サーバーの使用を推奨しますが、必須ではありません。代わりに AWS CLI または SDK を使用してもかまいません。会話でさらに詳しい情報が必要な場合にのみ、参照ファイルを読んでください。

  • AWS リソースのプロビジョニングや更新にあたり、IAM ロールの作成、権限範囲の設定、管理が必要な場合は、references/aws-iam-role-management.md を読んでください。サービスロール、実行ロール、信頼ポリシー、混乱した代理人への保護、権限の適切な管理について説明しています。

  • IAM ポリシーの生成、API 呼び出しに必要な IAM アクションの特定、またはアクションと操作の対応関係の理解が必要な場合は、references/aws-iam-policy-generation.md を読んでください。重要:ユーザーがアプリケーションのソースコード(言語は問いません)または Terraform のプラン JSON ファイル(terraform show -json の出力)を提示した場合、この参照ファイルを必ず読んでください。手作業でポリシーを作成するのではなく、iam-policy-autopilot を使用するよう定められています。 正確な対応関係を確認するため、プログラムによるサービス認可リファレンスを使用します。

検証済みの例外的なケース

CloudTrail:

  • AcceptHandshake/DeclineHandshake は、管理アカウントではなく、実行元アカウントにのみ記録されます。一元化には組織の証跡が必要です。
  • ConsoleLogin のリージョンはエンドポイントや Cookie によって異なり、常に us-east-1 とは限りません。?region= を指定すると、特定のリージョンを強制できます。

STS:

  • GetSessionToken の制限:(1)MFA が含まれていない場合、IAM API は使用できません。(2)AssumeRole と GetCallerIdentity を除き、STS は使用できません。
  • オプトインリージョンへのクロスアカウント AssumeRole では、呼び出し元アカウントではなく、対象アカウントでそのリージョンを有効にする必要があります。
  • ロールチェーン:セッションの上限は1時間です。

Organizations:

  • 停止済みまたは閉鎖済みのアカウントは、完全に閉鎖されるまで(約90日間)削除できません。先に削除してから、閉鎖してください。
  • ポリシー管理の委任には、register-delegated-administrator ではなく PutResourcePolicy を使用してください。
  • AI オプトアウトポリシーでは、デフォルトで管理アカウントが必要です。
  • ListPolicies のフィルターに使用できる Organizations のポリシータイプについては、aws organizations list-available-policy-types またはOrganizations API リファレンスで最新の一覧を取得してください。

SDK の詳細:

  • Organizations:DuplicatePolicyAttachmentException(PolicyAlreadyAttachedException ではありません)。
  • Boto3 IAM AccessKey のメソッドは activate()、deactivate()、delete() です。update() はありません。
  • インスタンスプロファイル:waiter と time.sleep(10) を組み合わせるパターンです。
  • 管理ポリシーの最大バージョン数:5。

SAML:

  • 暗号化されたアサーションの URL:https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID。
  • IdP の秘密鍵は、.pem 形式で IAM にアップロードします。

ポリシー評価:

  • キーが空または欠落している場合、ForAllValues は true と評価されます(空虚な真)。これを避けるには、同じコンテキストキーに対する ForAllValues に加えて Null 条件を使用し、そのキーが存在し、null ではないことを必須にしてください。たとえば、aws:TagKeys コンテキストキーを評価する場合:

    {
      "Version": "2012-10-17",
      "Statement": {
        "Effect": "Allow",
        "Action": "ec2:RunInstances",
        "Resource": "*",
        "Condition": {
          "ForAllValues:StringEquals": {
            "aws:TagKeys": ["Alpha", "Beta"]
          },
          "Null": {
            "aws:TagKeys": "false"
          }
        }
      }
    }
    
  • aws:TagKeys の値は大文字と小文字を区別しますが、aws:PrincipalTag/<key>、aws:ResourceTag/<key>、aws:RequestTag/<key> のタグキーでは区別されません。上記の Allow 許可リストには影響しません(大文字小文字を変えたキーは単にリストに含まれないだけです)が、aws:TagKeys に対する ForAnyValue:StringEquals を使ってタグキーを保護する Deny は、大文字小文字を変えたキー(PROTECTED-TAG)で回避されます。ForAnyValue:StringEqualsIgnoreCase を使用してください。詳しくは references/common-pitfalls.md を参照してください。

  • 同一アカウント内では、IAM ユーザー ARN への許可を付与するリソースベースポリシーは、アクセス許可の境界をバイパスします。

  • IAM ポリシーの直接操作による 8 つの権限昇格アクション:PutGroupPolicy、PutRolePolicy、PutUserPolicy、CreatePolicy、CreatePolicyVersion、AttachGroupPolicy、AttachRolePolicy、AttachUserPolicy。

  • Resource: "*" を指定した iam:PassRole と、コンピューティングサービスでの作成/更新権限(EC2 の RunInstances、Lambda の CreateFunction/UpdateFunctionConfiguration、ECS の RegisterTaskDefinition、Glue、SageMaker、CloudFormation など)を組み合わせると、Administrator を含む、アカウント内で渡すことのできる任意のロールへの権限昇格につながります。Resource を特定のロール ARN または IAM パスに限定してください。必要に応じて、iam:PassedToService/iam:AssociatedResourceArn で制約を追加してください。IAM User Guide — ユーザーにロールを渡すアクセス許可を付与するを参照してください。

MFA:

  • 新しい仮想 MFA デバイスを追加するときに、割り当てられていない仮想 MFA デバイスは自動的に削除されます。
  • MFA の再同期のみを許可するポリシーの NotAction には、正確に次のアクションを指定する必要があります:iam:ListMFADevices、iam:ListVirtualMFADevices、iam:ResyncMFADevice。

SigV4:

  • IncompleteSignatureException には、転送中の改ざんを診断するための Authorization ヘッダーの SHA-256 ハッシュが含まれます。

サービス固有のロール:

  • Redshift Serverless の信頼ポリシーでは、サービスプリンシパルとして redshift-serverless.amazonaws.com と redshift.amazonaws.com の両方を含めてください(AWS のドキュメントに基づきます。serverless を省略すると、COPY で Not authorized to get credentials of role が発生します)。
  • IAM OIDC プロバイダーでは、ほとんどのプロバイダーでサムプリントは不要です(AWS が信頼された CA を通じて検証します)。

ポリシーの概要表示:

  • 複数サービスのワイルドカードアクション(例:codebuild:*、codecommit:*)とサービス固有のリソース ARN を含む単一ステートメントでは、各リソースは対応するサービスの概要にのみ表示されます(CodeBuild ARN は CodeBuild など)。リソースのサービスプレフィックスがステートメント内のどのアクションにも一致しない場合に限り、すべてのアクションの概要に表示されます(「不一致のリソース」)。

コメント