Service-linked role
GPT-4.icon
特定のAWSサービスが、そのサービス自身のリソースを管理するために使うIAM Roleのことです。 🔧 もう少し具体的に言うと:
あるAWSサービス(例:Amazon ECS, AWS Lambda, Amazon SageMakerなど)が、
「自分自身の機能を実現するために、裏で他のAWSリソース(例:CloudWatch Logs、S3、EC2など)にアクセスしたい」
という場面があります。
このとき、そのサービス専用に作られるIAMロールが「Service-linked role」です。
✅ 特徴
table:_
特徴 内容
自動作成 サービスを初めて有効にしたときに自動で作られることが多いです。
削除できない そのサービスで使われている限り、基本的には削除できません。
名前にルールあり 例えば、AWSServiceRoleForECS のような名前になります。
信頼ポリシー そのサービスのみがこのロールを引き受けられるようになっています。
管理はAWS 必要なIAMポリシーはAWSが自動で付けてくれます。
🧠 例:Amazon ECS の Service-linked role
code:plaintext
ロール名: AWSServiceRoleForECS
信頼されたサービス: ecs.amazonaws.com
権限: EC2やCloudWatchにアクセスする権限などが自動で付与される
ECSはこのロールを使って、タスクの起動やログの送信、ロードバランサとの連携などを行います。
💡 なぜわざわざ存在するの?
セキュリティのため:各サービス専用にロールを分離することで、他のサービスと権限を混ぜないようにする。
運用の簡素化:ユーザーがわざわざポリシーを自作する必要がない。
監査しやすい:どのサービスが何をしているのかがIAMロール単位で分かる。
🔍 関連コマンド・確認方法
code:sh
# Service-linked role の一覧表示
# あるサービスが必要とするロールを確認(例: ECS)
aws iam get-role --role-name AWSServiceRoleForECS
必要であれば、特定のサービスの Service-linked role の動作や削除の注意点なども詳しく解説できます。
code:tf(rb)
resource "aws_iam_service_linked_role" "elasticbeanstalk" {
aws_service_name = "elasticbeanstalk.amazonaws.com"
}