security
A
信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
IAMサービスリンクロール — AWSサービスが自動作成するロールの仕組み
IAMサービスリンクロールの概念、AWSサービスが自動作成する専用ロール、通常のIAMロールとの違い、削除条件、Organizations SCPとの関係、トラブルシューティングを解説。
一言結論
サービスリンクロールはユーザーがポリシーを変更できないAWSサービス専用ロールであり、SCPで広範なDenyを設定するとサービスリンクロールの操作も影響を受けてAuto ScalingやECS等が機能しなくなるため、SCP設計時は必ずサービスリンクロールの除外条件を考慮すべきだ。
サービスリンクロールとは
サービスリンクロール(Service-Linked Role)はAWSサービスが直接使用するためにあらかじめ定義されたIAMロールだ。ユーザーが個別にポリシーを設定する必要がなく、サービスが自動的に作成・管理する。
通常のIAMロール:
→ ユーザーがポリシーを定義して作成
→ 信頼ポリシーでどのエンティティが引き受けられるかを定義
→ ユーザーが管理責任を持つ
サービスリンクロール:
→ AWSサービスが自動的に作成
→ サービス固有のポリシーが事前に定義済み
→ ユーザーはポリシーを変更できない
→ 命名規則: AWSServiceRoleFor[ServiceName]
サービスリンクロールの例
EC2 Auto Scaling:
ロール名: AWSServiceRoleForAutoScaling
用途: Auto ScalingグループがEC2インスタンスを管理する権限
自動作成: Auto Scalingグループ作成時に存在しない場合
ECS:
ロール名: AWSServiceRoleForECS
用途: ECSがENI、セキュリティグループ等を管理
GuardDuty:
ロール名: AWSServiceRoleForAmazonGuardDuty
用途: GuardDutyがCloudTrail、VPCフローログを読み取る
Config:
ロール名: AWSServiceRoleForConfig
用途: ConfigがS3にスナップショットを保存、CloudTrailを読む
Organizations:
ロール名: AWSServiceRoleForOrganizations
用途: Organizations内の各種操作
サービスリンクロールの確認
# サービスリンクロールの一覧確認
aws iam list-roles \
--path-prefix /aws-service-role/
# 特定のサービスリンクロールの詳細確認
aws iam get-role \
--role-name AWSServiceRoleForAutoScaling
// サービスリンクロールの信頼ポリシー(例: Auto Scaling)
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "autoscaling.amazonaws.com"
},
"Action": "sts:AssumeRole"
}]
}
サービスリンクロールの作成
通常はサービスを有効化した際に自動作成される。手動で作成する場合:
# サービスリンクロールの手動作成
aws iam create-service-linked-role \
--aws-service-name ecs.amazonaws.com
# Organizations統合のサービスリンクロール作成
aws iam create-service-linked-role \
--aws-service-name config.amazonaws.com
サービスリンクロールの削除条件
サービスリンクロールは削除に条件がある。
削除できない場合:
→ そのロールに依存するリソースがまだ存在する
→ 例: Auto Scalingグループが存在する場合、Auto Scalingサービスリンクロールは削除不可
削除手順:
1. 依存リソースを確認
aws iam get-service-linked-role-deletion-status
2. 依存リソースを削除
3. サービスリンクロールを削除
aws iam delete-service-linked-role \
--role-name AWSServiceRoleForAutoScaling
SCPとサービスリンクロールの関係
SCP の適用範囲:
→ SCPはサービスリンクロールの操作にも適用される
注意が必要なSCP設定:
SCPでec2:*を拒否した場合:
→ Auto Scalingサービスリンクロールもec2:Describeができなくなる
→ Auto Scalingが機能しなくなる可能性
推奨:
→ サービスリンクロールによる操作を除外するConditionを追加
{
"Effect": "Deny",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"ArnNotLike": {
"aws:PrincipalArn": [
"arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/*"
]
}
}
}
サービスリンクロールのポリシー変更
変更できること:
✅ サービスリンクロールへの説明タグの追加
✅ 一部のサービスではカスタム権限(Suffix付き)を追加できる
変更できないこと:
❌ アタッチされたポリシー(サービスが管理)
❌ 信頼ポリシー(サービスが管理)
例外: Amazon Elastic Kubernetes Service (EKS)
→ iam:PassRole 等でユーザー定義のロールを指定できる
試験頻出ポイント
| シナリオ | 回答 |
|---|---|
| AWSServiceRoleForAutoScaling の役割 | Auto ScalingがEC2を管理するための権限 |
| サービスリンクロールを削除できない理由 | 依存するリソースが存在する |
| ユーザーがポリシーを変更できるか | できない(サービスが管理) |
| SCPでAWS Configを誤って無効化 | サービスリンクロールの操作も影響を受ける |
| サービスリンクロールの命名 | AWSServiceRoleFor[ServiceName] |
まとめ
サービスリンクロールはAWSサービスが自動管理する専用IAMロールで、ユーザーはポリシーを変更できない。SCPを設定する際はサービスリンクロールへの影響を考慮し、必要に応じて除外条件を追加することが重要だ。