iam:PassRole と sts:AssumeRole は、同じ IAM ロールを扱いますが、役割がまったく違います。
| 権限 | 意味 | 主な利用者 |
|---|---|---|
| iam:PassRole | 「このロールをAWSサービスに使わせる設定をしてよい」 | 人、Terraform、AWS Configなどの設定実行者 |
| sts:AssumeRole | 「実際にそのロールになり、一時的な認証情報を取得してよい」 | SSM、EC2、Lambda、人、別のIAMロールなど |
一言で表すと、
iam:PassRoleは「ロールを使うサービスを指定する権限」sts:AssumeRoleは「実際にそのロールとして動く権限」
です。
会社の制服に例えると
IAMロールを「特定の作業をするための制服」と考えてみます。
たとえば、次の制服があります。
SSM自動修復担当の制服
この制服を着ると、CloudTrailを有効化できる
このとき、3人の登場人物がいます。
- AWS Config
- SSMに自動修復を依頼する人
- Systems Manager Automation
- 実際に自動修復を行う人
- Automation実行ロール
- CloudTrailを修復する権限が入った制服
流れは次のようになります。
AWS Config
│
│ iam:PassRole
│ 「SSMさん、この制服を使って作業してください」 ← ConfigがSSMに制服を渡す
▼
Systems Manager Automation
│
│ sts:AssumeRole
│ 「この制服を実際に着用します」 ← SSMが制服を着れる
▼
Automation実行ロール
│
│ cloudtrail:StartLogging
▼
CloudTrailを修復
iam:PassRole では、AWS Config自身がそのロールになるわけではありません。
AWS Configは、
「Systems Managerに、この実行ロールを使用させてもよい」
という許可を持っているだけです。
実際に実行ロールを引き受けるのは、Systems Managerです。