ちょっと話題の記事

7 年間溜めた AWS IAM AWS 管理ポリシーへの愛を語りました #devio2022

AWS 管理ポリシーには AWS の過去、未来、そしてすべてが詰まっています。

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

7 年前からが好きだよ AWS 管理ポリシー

コンバンハ、千葉(幸)です。

弊社主催のオンラインイベントDevelopersIO 2022の「アルティメットLT AWS愛を語り尽くす!AWS バーサス クラスメソッド 〜むしろお前が好きだよ〜」で AWS IAM AWS 管理ポリシーへの愛を語ってきました。

ここが好きだよ AWS 管理ポリシー

好きなポイントをかいつまんで書きます。

新サービスや新機能の発表の前に作成・更新されていることがある

新サービスや新機能が発表される前から、それらのための AWS 管理ポリシーが作成・更新されていることが多いです。

AWS管理ポリシーの更新をウォッチすることで、「もしかしたらこんなことできるようになるのかな?」という想像が捗ったりします。

数が多い

2022/8/1 時点で 960個以上の AWS 管理ポリシーがありました。推しを見つけたくなりますね。

たまに数が減る

非推奨(Deprecated)になると、IAM リソースにアタッチされていない限り消えて無くなっていきます。儚さを感じていいですね。

命名規則や説明文がバラエティ豊か

「ポリシー名でアンダースコアそこに挟むの……?」「説明が数百文字あるものもあれば 20文字足らずで終わるものもある……」など、眺めていて飽きません。

いろんなチームがそれぞれ独自に決めてるんだろうな、とか過去の歴史があるんだろうな、といった妄想が捗ります。

おすすめの AWS 管理ポリシーの愛で方

CSV 形式にしてスプレッドシートで愛でるのがおすすめです。

IAM ポリシーの一覧を必要な項目にのみ絞って出力する例が以下。

aws iam list-policies\
  --scope AWS\
  --max-items 1000\
  | jq -r '
    ["ポリシー名","パス","デフォルトバージョン","作成日時","更新日時","アタッチ可否"],
    (.Policies[] | [.PolicyName,.Path,.DefaultVersionId,.CreateDate,.UpdateDate,.IsAttachable]) | @csv' | pbcopy

一度に取得できるポリシーは1,000個までなので、複数回に分けての実行が必要になる日も近そうです。 勘違いでした。1,000個を超えても一度のコマンド実行で取得できます。

上記のコマンドでは IAM ポリシーの「説明(description)」は取得できないため、そちらの情報が欲しいときは例えば以下のように実行します。

aws iam list-policies --max-items 1000 --scope AWS --output json | jq -r '.Policies[].Arn' \
  | while read policy; do
        aws iam get-policy --policy-arn $policy --output json | jq -r '.Policy | [.PolicyName,.Description] | @csv' >> policies.csv
    done

上記の例だとひとつずつ直列に実行することになり時間がかかるため、xargsコマンドなどを使用してパラレルでやる方がおすすめです(後から気づいた)。

1,000 を超える日も近い

AWS 管理ポリシーの数、そして他の何かの種類が今年中に 1,000 を超えそうです。

どちらが先に到達するか楽しみに待ちましょう!

登壇資料

AWS 管理ポリシーには AWS のすべてが詰まっています。興味を持つ方が増えれば何よりです。

以上、 チバユキ (@batchicchi) がお送りしました。

おまけ

泣く泣く削ったスライドです。

AWS 管理ポリシーをアルファベット順に並べた場合の先頭と末尾 5 つを調べてました。

おまけ2

AWS 管理ポリシーを愛でている最中に生まれた各種情報です。いずれも 2022/7/27 0:00(JTC)時点のアクティブな(非推奨でない)ポリシーを対象にしています。

月ごとの AWS 管理ポリシーの増加数

2015 2016 2017 2018 2019 2020 2021 2022
01 - 9 9 4 15 8 7 4
02 91 6 7 6 3 4 12 7
03 4 2 2 13 5 2 6 5
04 12 2 5 8 8 9 15 15
05 10 3 3 14 6 15 13 5
06 0 1 2 16 19 24 5 6
07 11 1 2 3 11 4 2 3
08 0 2 10 7 12 19 14 -
09 3 2 7 4 5 14 18 -
10 14 1 11 11 9 9 12 -
11 6 17 36 40 28 19 37 -
12 5 14 8 7 29 41 2 -

ポリシー名に登場する記号の件数

記号 件数
+ 0
= 0
, 0
. 0
@ 0
_ 31
- 11

ポリシー名の長さ TOP20

# ポリシー名 長さ
1 AmazonSageMakerServiceCatalogProductsCloudformationServiceRolePolicy 68
2 AmazonSageMakerServiceCatalogProductsCodePipelineServiceRolePolicy 66
3 AmazonSageMakerServiceCatalogProductsApiGatewayServiceRolePolicy 64
4 AmazonSageMakerServiceCatalogProductsCodeBuildServiceRolePolicy 63
5 AmazonSageMakerServiceCatalogProductsFirehoseServiceRolePolicy 62
6 AmazonSageMakerAdmin-ServiceCatalogProductsServiceRolePolicy 60
7 ApplicationDiscoveryServiceContinuousExportServiceRolePolicy 60
8 AWSBudgetsActions_RolePolicyForResourceAdministrationWithSSM 60
9 AmazonSageMakerServiceCatalogProductsLambdaServiceRolePolicy 60
10 AmazonSageMakerServiceCatalogProductsEventsServiceRolePolicy 60
11 AWSServiceRoleForCloudWatchAlarmsActionSSMServiceRolePolicy 59
12 AmazonSageMakerServiceCatalogProductsGlueServiceRolePolicy 58
13 AWSIoTDeviceDefenderAddThingsToThingGroupMitigationAction 57
14 AWSIoTDeviceDefenderReplaceDefaultPolicyMitigationAction 56
15 AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction 56
16 QuickSightAccessForS3StorageManagementAnalyticsReadOnly 55
17 AWSKeyManagementServiceMultiRegionKeysServiceRolePolicy 55
18 AWSKeyManagementServiceCustomKeyStoresServiceRolePolicy 55
19 AWSCloudWatchAlarms_ActionSSMIncidentsServiceRolePolicy 55
20 DynamoDBCloudWatchContributorInsightsServiceRolePolicy 54

ポリシー名の短さ TOP20

# ポリシー名 長さ
1 Billing 7
2 AWSDenyAll 10
3 SupportUser 11
4 AWSConnector 12
5 LexBotPolicy 12
6 AWSConfigRole 13
7 SecurityAudit 13
8 DataScientist 13
9 AWSCloud9User 13
10 IAMFullAccess 13
11 AWSLambdaRole 13
12 AmazonSNSRole 13
13 IVSRecordToS3 13
14 AWSIoTLogging 13
15 ReadOnlyAccess 14
16 ViewOnlyAccess 14
17 AWS_ConfigRole 14
18 AWSSSOReadOnly 14
19 AmazonChimeSDK 14
20 IAMUserSSHKeys 14

説明の長さ TOP20

# ポリシー名 長さ
1 AWSElasticDisasterRecoveryReplicationServerPolicy 738
2 AWSApplicationMigrationReplicationServerPolicy 661
3 AWSElasticDisasterRecoveryConversionServerPolicy 660
4 AmazonGuardDutyMalwareProtectionServiceRolePolicy 652
5 AWSApplicationMigrationConversionServerPolicy 589
6 VMImportExportRoleForAWSConnector 569
7 AWSElasticDisasterRecoveryRecoveryInstancePolicy 544
8 AWSBackupAuditAccess 503
9 AmazonRedshiftQueryEditorV2ReadSharing 457
10 AmazonRedshiftQueryEditorV2ReadWriteSharing 437
11 AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy 436
12 AWSIoTSiteWiseConsoleFullAccess 430
13 AWSElasticDisasterRecoveryFailbackInstallationPolicy 406
14 AWSWAFConsoleFullAccess 404
15 AWSWAFConsoleReadOnlyAccess 398
16 AmazonRedshiftQueryEditorV2NoSharing 388
17 NeptuneConsoleFullAccess 378
18 AmazonDocDBConsoleFullAccess 374
19 AmazonEKS_CNI_Policy 372
20 ServerMigrationConnector 367

説明の短さ TOP20

# ポリシー名 長さ
1 AWSDenyAll 16
2 AWSRoboMakerServicePolicy 24
3 AWSRoboMakerServiceRolePolicy 24
4 AWSIQFullAccess 30
5 LexBotPolicy 31
6 AWSSSODirectoryReadOnly 33
7 AWSXrayReadOnlyAccess 34
8 AmazonTextractFullAccess 34
9 AmazonEMRFullAccessPolicy_v2 34
10 AlexaForBusinessPolyDelegatedAccessPolicy 34
11 LexChannelPolicy 35
12 AmazonSSMFullAccess 35
13 CloudWatchFullAccess 35
14 AWSXrayWriteOnlyAccess 35
15 AmazonRekognitionReadOnlyAccess 35
16 AWSXrayFullAccess 36
17 AWSFMAdminFullAccess 36
18 AWSPanoramaFullAccess 36
19 AWSIoTEventsFullAccess 36
20 AmazonMacieServiceRolePolicy 36

こういうのをまとめてるだけでご飯が進むタイプです。