AWSのサービスを利用する中で「ExecutionRole」を作成する機会があり、気になったので調べてみました。
ちなみに「Execution」直訳で「実行」「遂行」などになります。
Executionロールとは?
AWSのサービスが特定のタスクを実行する際に使用するIAMロール。例えば、AWS CloudFormationやAWS Control Towerなどがスタックやリソースをプロビジョニング(作成)する際に、このロールを引き受けて必要な権限を持って操作を行う際に使われる。
具体的なケース
-
AWS Control Tower: ガードレールやアカウントプロビジョニングなどの管理タスクを実行する際に使用。
- 例えば、AWS Control Towerのランディングゾーンにアカウントを登録する際、
AWSControlTowerExecution
というIAMロールを、登録するアカウント内に作成する必要があった。
- 例えば、AWS Control Towerのランディングゾーンにアカウントを登録する際、
また、Executionロール作成時の信頼ポリシーに含まれるsts
についても説明します。
STS(Security Token Service)とは?
STSはAWSサービス間の安全なアクセス管理を支援し、一時的な認証情報を提供してセキュリティを強化。一時的な認証情報により、必要な権限を最小限の期間で提供し、セキュリティリスクを低減する。
STSの概要
一時的なセキュリティ認証情報を発行
-
一時的なセキュリティトークンの発行
短期間有効なトークンを提供し、長期間有効な認証情報を回避。 -
フェデレーテッドアクセスのサポート
外部のアイデンティティプロバイダー(例:企業のActive Directory)と連携し、AWSリソースへのアクセスを実現。 -
ロールの引き受け
ユーザーやサービスが特定のIAMロールを一時的に引き受ける際に使用。
サービス間の呼び出しにおけるSTSの役割
AWSの各サービスが他のサービスを呼び出す際、通常はIAMロールを使用して必要な権限を付与。このプロセスでSTSが活用される。
-
IAMロールの作成
呼び出し元のサービス(サービスA)が他のサービス(サービスB)にアクセスするためのIAMロールを作成し、必要な権限を付与。 -
信頼ポリシーの設定
ロールの信頼ポリシーに、サービスAがこのロールを「引き受ける(AssumeRole)」ことを許可。 -
ロールの引き受け
サービスAがサービスBにアクセスする際、STSのAssumeRole APIを呼び出して一時的な認証情報(アクセスキー、シークレットキー、セッショントークン)を取得。 -
アクセスの実行
サービスAは取得した一時的な認証情報を使用して、サービスBに対する操作を実行。
ExecutionロールとSTSの関係
Executionロールには信頼ポリシーが設定されており、特定のエンティティ(例:CloudFormationやControl Tower)がそのロールを「引き受ける(AssumeRole)」ことが許可されている。この引き受けの際にSTSが利用され、一時的なセキュリティ認証情報が発行される。これにより、サービスは必要な権限を持って安全にタスクを実行できる。
まとめ
- Executionロール: AWSサービスがリソースを操作する際に使用するIAMロール。
- STS(Security Token Service): 一時的な認証情報を発行し、ロールの引き受けなどを安全に行うためのサービス。
- ExecutionロールにはSTSの信頼ポリシーが設定されており、サービスがロールを引き受けて必要な権限を取得する際にSTSが活用される。