412-AWS SAP AWS 「理論・実践・一問道場」CAPABILITY_NAMED_IAM

 

理論

カスタムIAMロールは、AWSリソースにアクセスするために作成されるユーザーやサービスの権限を定義したものです。特定の操作を許可するために、信頼ポリシー(どのサービスがロールを引き受けるか)とアクセス許可ポリシー(どのアクションを実行できるか)を設定できます。
これにより、ユーザーやサービスに対して柔軟で細かいアクセス権限の管理が可能となり、セキュリティを強化できます。
 
CAPABILITY_NAMED_IAMは、AWS CloudFormationで使用される特別な許可です。この許可が必要なのは、CloudFormationがテンプレート内でカスタムIAMロールIAMポリシーなどのリソースを作成または変更する場合だからです。

なぜCAPABILITY_NAMED_IAMが必要か?

AWS CloudFormationはリソースの作成・管理を自動化するためのツールですが、IAMロールやポリシーは非常にセンシティブでセキュリティ上重要なリソースです。そのため、AWSはCloudFormationがこれらのリソースを作成したり、カスタム名で変更したりする場合に、明示的に許可を与えることを求めています。

具体的な理由は以下の通りです:

  1. カスタムIAMロールの作成・変更
      • AWS CloudFormationがテンプレート内でカスタム名を持つIAMロールを作成しようとする場合、このリソースは他のリソースと異なり、権限の付与やアクセス管理に大きな影響を与えます。誤って適切な権限を設定しないと、アカウントのセキュリティに深刻な影響を与える可能性があります。
  1. リソースの安全な管理
      • IAMロールの作成や変更は、AWSアカウントのアクセス管理に直接影響を与えます。これにより、CloudFormationが安全にこれらのリソースを管理できるよう、明示的にユーザーが同意する必要があります。CAPABILITY_NAMED_IAMは、これらのリソースに対する操作を許可するための保護機能です。
  1. セキュリティとガバナンスの管理
      • IAMリソースは、AWSリソースやデータに対するアクセスを制御するため、最も厳密に管理されるべきリソースの一つです。AWSは、CloudFormationテンプレートでカスタム名のIAMリソースが変更される場合、ユーザーがその影響を認識し、許可を与えることを求めることで、セキュリティリスクを低減します。

目的

CAPABILITY_NAMED_IAMの目的は、CloudFormationがカスタムIAMリソースを安全に作成・変更できるようにするためです。この権限を与えることで、CloudFormationは以下のことが可能になります:
  • カスタムIAMロールやポリシーを作成する
  • IAMリソースの名前を変更する
  • テンプレートに記載されたIAMリソースを展開する
ユーザーはこの権限を付与することで、CloudFormationがIAMリソースを操作する際のセキュリティ上のリスクを理解し、承認する必要があるため、意図しない権限変更が行われるのを防ぐことができます。

結論

CAPABILITY_NAMED_IAMは、CloudFormationがカスタム名のIAMリソースを作成・変更する際に、ユーザーの明示的な承認を求めるために使用されます。この権限を指定することで、IAMロールやポリシーが安全に管理され、リソースが適切に展開されることが保証されます。

実践

一問道場

問題 #412
ソリューションアーキテクトは、以前使用されていなかったAWSリージョンに新しいセキュリティツールを展開する準備をしています。ソリューションアーキテクトは、AWS CloudFormationスタックセットを使用してツールを展開します。スタックセットのテンプレートにはカスタム名を持つIAMロールが含まれています。スタックセットの作成時に、スタックインスタンスが正常に作成されませんでした。
スタックを正常に展開するためにソリューションアーキテクトは何をすべきですか?
A. 関連するすべてのアカウントで新しいリージョンを有効にし、スタックセットの作成時にCAPABILITY_NAMED_IAM機能を指定します。
B. サービスクォータコンソールを使用して、新しいリージョンの各アカウントにおけるCloudFormationスタックの数のクォータ増加をリクエストし、スタックセットの作成時にCAPABILITY_IAM機能を指定します。
C. スタックセットの作成時にCAPABILITY_NAMED_IAM機能とSELF_MANAGED権限モデルを指定します。
D. スタックセットの作成時に管理者ロールARNとCAPABILITY_IAM機能を指定します。

解説

この問題におけるポイントは、CloudFormationスタックセットの展開時に必要な許可設定IAMロールのカスタム名に関連しています。
AWS CloudFormationスタックセットを使う場合、スタックを作成するリージョンで特定のリソースを操作する権限が必要です。スタックセットの作成に失敗した原因は、IAMロールに関連する設定や許可不足が考えられます。

解説:

選択肢A:
「関連するすべてのアカウントで新しいリージョンを有効にし、スタックセットの作成時にCAPABILITY_NAMED_IAM機能を指定します。」
  • 正解です。AWS CloudFormationでは、スタックセットにカスタムIAMロール名が含まれている場合、CAPABILITY_NAMED_IAMという権限を指定する必要があります。この指定を行わないと、IAMリソースの作成時にエラーが発生します。また、新しいリージョンにリソースを作成するには、そのリージョンが有効化されている必要があります。
選択肢B:
「サービスクォータコンソールを使用して、新しいリージョンの各アカウントにおけるCloudFormationスタックの数のクォータ増加をリクエストし、スタックセットの作成時にCAPABILITY_IAM機能を指定します。」
  • これは、スタック数の制限に関するもので、今回の問題の解決には直接関係ありません。CAPABILITY_IAMは必要ですが、クォータ増加は問題の原因ではないため、解決には不要です。
選択肢C:
「スタックセットの作成時にCAPABILITY_NAMED_IAM機能とSELF_MANAGED権限モデルを指定します。」
  • SELF_MANAGED権限モデルは、スタックセットの管理者と実行者が異なる場合に使用されます。しかし、今回は特にその設定が必要な状況ではありません。SELF_MANAGEDはオプションであり、問題の解決には必須ではないため、これでは解決できません。
選択肢D:
「スタックセットの作成時に管理者ロールARNとCAPABILITY_IAM機能を指定します。」
  • CAPABILITY_IAMは必要ですが、カスタムIAMロール名がある場合は、CAPABILITY_NAMED_IAMが必要です。管理者ロールARNを指定することは有用ですが、問題の本質はIAMロール名に関する設定にあります。

結論:

スタックセットの作成時に、IAMロールのカスタム名を使用している場合は、CAPABILITY_NAMED_IAMを指定することが必要です。また、スタックセットをデプロイするリージョンが有効であることも確認する必要があります。そのため、選択肢Aが最も適切です。
413-AWS SAP AWS 「理論・実践・一問道場」APIとエンドポイント410-AWS SAP AWS 「理論・実践・一問道場」AssociatePublicIpAddress
Loading...
minami
minami
みなみの成長 🐝
Announcement

🎉 ブログへようこそ 🎉

名前: みなみ一人会社
性別:
国籍: China 🇨🇳
政治スタンス: 民主主義支持者
完全独学で基本情報技術者をはじめ、32個の資格を仕事をしながら取得。
現在はIT会社で技術担当として働きながら、ブログ執筆や学習支援にも取り組んでいます。
独学で合格できる学習法や勉強法、試験対策を発信中!

📚 発信内容

  • 💻 IT・システム開発
  • 🏠 不動産 × 宅建士
  • 🎓 MBA 学習記録