Access Analyzerを有効化する際には自動的にIAMロールが作られます

こんにちは。サービスグループの武田です。Access AnalyzerはAWS APIで有効化する際にも自動でロールを作成してくれるようです。実際に試してみましょう。
2021.08.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。サービスグループの武田です。

AWSではS3やIAMロールのリソースベースポリシーなどを分析してくれるAccess Analyzerというサービスがあります。リリースからさまざまな機能が追加されていますがここでは解説しません。詳しくは千葉のエントリなどをぜひご覧ください。

さてこのAccess Analyzerですが、他のAWSサービスと同様、ユーザーのリソースにアクセスする際サービスリンクロールを使用します。マネジメントコンソールではよく自動で作成してくれますね。AWSのドキュメントを読んでいると、AWS APIで有効化する際にも自動で作成してくれる旨が書かれていました。というわけで、ちょっと珍しいなと思ったので試してみました。

AWS CLIでAccess Analyzer有効化してみた

それでは実際にアナライザーの作成とともにロールも作成されることを確認してみましょう。

まずは件のロールがないことを確認します。

$ aws iam list-roles --no-paginate | jq '.Roles[] | select(.RoleName == "AWSServiceRoleForAccessAnalyzer")'

ありませんでした。続いてアナライザーを作成します。

$ aws accessanalyzer create-analyzer --analyzer-name cm-AccessAnalyzer --type ACCOUNT
{
    "arn": "arn:aws:access-analyzer:ap-northeast-1:123456789012:analyzer/cm-AccessAnalyzer"
}

問題なく作成されました。先ほどと同様にロールを確認してみます。

$ aws iam list-roles --no-paginate | jq '.Roles[] | select(.RoleName == "AWSServiceRoleForAccessAnalyzer")'
{
  "Path": "/aws-service-role/access-analyzer.amazonaws.com/",
  "RoleName": "AWSServiceRoleForAccessAnalyzer",
  "RoleId": "XXXXXXXXXXXXXXXXXXXXX",
  "Arn": "arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer",
  "CreateDate": "2021-08-24T00:00:00+00:00",
  "AssumeRolePolicyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "access-analyzer.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  },
  "MaxSessionDuration": 3600
}

新しくロールが作成されています!

最後に

マネジメントコンソールでは自動的にロールが作成されるけど、CLIなどでは手動で作らないといけないというイメージがありました。CLI経由でも作成してくれるものもあるんですね。安心してAccess Analyzerを有効化しましょう。無料です!