【小ネタ】サービスリンクロールとサービスロールを見分ける方法

2024.04.01

はじめに

テクニカルサポートの 片方 です。
サービスリンクロールとサービスロールを見分ける方法について調査する機会があったので紹介します。
なお、サービスリンクロールとサービスロールの違いについてはドキュメントをご確認ください。

AWS サービス ロール
サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロール です。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「IAM ユーザーガイド」の「AWS のサービス にアクセス許可を委任するロールの作成」を参照してください。

(略)

AWS サービスにリンクされたロール
サービスリンクロールは、AWS のサービス にリンクされているサービスロールの一種です。サービスは、ユーザーに代わってアクションを実行するロールを引き受けることができます。サービスにリンクされたロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールの許可を表示できますが、編集することはできません。

見分け方

IAM ロールの ARN から判別可能です。
ARN で "/aws-service-role/" のパスが先頭となる IAM ロールについては、通常の IAM ロールやサービスロールではなく、サービスリンクロールであると判断可能です。

なお、サービスリンクロールが用意されている AWS サービスの一覧については以下をご参照ください。

確認してみた

マネジメントコンソールの場合

IAM のマネジメントコンソール画面へ、ロールセクションを選択
右上の歯車をクリック

ARN が表示されるようにチェック

ARN も表示されるようになったら、ページ内検索 (Ctrl + F) などで "/aws-service-role/" を検索すれば、どのロールがサービスリンクロールであるか確認可能です。

AWS CLI コマンドの場合

対象 AWS アカウント内に存在するサービスリンクロール一覧を取得したい場合、以下の AWS CLI コマンドで取得可能です。

aws iam list-roles --query "Roles[?contains(Arn, '/aws-service-role/')].Arn"
※ 出力例
$ aws iam list-roles --query "Roles[?contains(Arn, '/aws-service-role/')].Arn"
[
    "arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer",
    "arn:aws:iam::123456789012:role/aws-service-role/elasticfilesystem.amazonaws.com/AWSServiceRoleForAmazonElasticFileSystem",
    "arn:aws:iam::123456789012:role/aws-service-role/fsx.amazonaws.com/AWSServiceRoleForAmazonFSx",
    "arn:aws:iam::123456789012:role/aws-service-role/guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDuty",
    "arn:aws:iam::123456789012:role/aws-service-role/malware-protection.guardduty.amazonaws.com/AWSServiceRoleForAmazonGuardDutyMalwareProtection",
    "arn:aws:iam::123456789012:role/aws-service-role/ssm.amazonaws.com/AWSServiceRoleForAmazonSSM",
    "arn:aws:iam::123456789012:role/aws-service-role/ops.apigateway.amazonaws.com/AWSServiceRoleForAPIGateway",
    "arn:aws:iam::123456789012:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable",
    "arn:aws:iam::123456789012:role/aws-service-role/mgn.amazonaws.com/AWSServiceRoleForApplicationMigrationService",
    "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling",
    "arn:aws:iam::123456789012:role/aws-service-role/cloud9.amazonaws.com/AWSServiceRoleForAWSCloud9",
    (略)
    "arn:aws:iam::123456789012:role/aws-service-role/support.amazonaws.com/AWSServiceRoleForSupport",
    "arn:aws:iam::123456789012:role/aws-service-role/trustedadvisor.amazonaws.com/AWSServiceRoleForTrustedAdvisor"
]

まとめ

本ブログが誰かの参考となれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。