【小ネタ】サービスリンクロールとサービスロールを見分ける方法
はじめに
テクニカルサポートの 片方 です。
サービスリンクロールとサービスロールを見分ける方法について調査する機会があったので紹介します。
なお、サービスリンクロールとサービスロールの違いについてはドキュメントをご確認ください。
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" ]
まとめ
本ブログが誰かの参考となれば幸いです。
参考資料
- ロールに関する用語と概念 - AWS Identity and Access Management
- サービスリンクロールの使用 - AWS Identity and Access Management
- IAM と連携する AWS のサービス - AWS Identity and Access Management
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。