SJ blog
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を設定する際はサービスリンクロールへの影響を考慮し、必要に応じて除外条件を追加することが重要だ。