[オフライン世界最速?AWS re:Inforce 2024 re:Cap セミナー] 『IAM Access Analyzer のアップデートを語ります』というタイトルで登壇しました。#AWSreInforce
こんにちは、AWS 事業本部の平木です!
先週フィラデルフィアにて開催された AWS re:Inforce 2024 の振り返りを行う【オフライン世界最速?】AWS re:Inforce 2024 re:Cap セミナーに登壇いたしました。
登壇内容についてブログにて解説します。
登壇資料
登壇内容
導入
自己紹介もろもろは割愛し、今回の re:Inforce でのキーノートで AWS CISO の Chris Betz より以下のような話がありました。
- AWS は、ゼロトラストに対して簡易化・コスト効率化のために投資している
- ゼロトラストには、最小権限の特権アクセスを備えた協力なアクセス管理が必要
- 多くの組織は統一したセキュリティポリシーの維持を困難になっている
以上のような話を受け、IAM Access Analyzer では 2 つのアップデートが登場しました。
- IAM Access Analyzer が未使用のアクセスに対する推奨事項をプレビュー表示
- キーノート中でアップデートが周知
- IAM Access Analyzer のカスタムポリシーチェックでパブリックと重要リソースアクセスのチェックが追加
- re:Inforce 期間中にアップデート
未使用のアクセスのアップデート
まず 1 点目は、未使用のアクセスというアナライザーのタイプのアップデートです。
IAM Access Analyzer における未使用のアクセスは、昨年の re:Invent 2023 にて登場した新しい検出結果タイプです。
詳細はこちらのブログを参照ください。
今回のアップデートでは、この未使用のアクセスで検知した検出結果についてどのように対処すべきかの Recommendations が表示されるようになりました。
検出結果のタイプとして 2 種類が表記されます。
- 未使用の許可
- ポリシーの中で使用されていないアクションを検知
- 未使用のロール/パスワード/アクセスキー
- 利用していないロール(またはパスワード、アクセスキー)を検知
未使用の許可の場合、下記スライドのように Recommendations の欄に既存のポリシー名と提案する新しいポリシー名が表記されています。
Preview Policy を確認すると、提案する新しいポリシーのドキュメントを参照できます。
未使用のロールの場合は、対象の IAM ロールと削除しましょうねといった推奨事項が記載されていることが分かります。
このような形でより最小権限の設定に役立つアップデートとなっていました。
詳細は下記ブログを参照ください。
カスタムチェックポリシーのアップデート
続いて 2 点目のアップデートはカスタムチェックポリシーに 2 点ほどアップデートがありました。
カスタムチェックポリシーは昨年の re:Invent 2023 にて追加された機能です。
詳細は下記ブログを参照ください。
今回はこちらのカスタムチェックポリシーに 2 つのチェックのアップデートがあり、
- CheckNoPublicAccess (New)
- 新規追加のチェックでパブリックアクセスのポリシーかどうかをチェックします
- パブリックアクセスがある場合には
FAIL
、ない場合にはPASS
となります
- CheckAccessNotGranted (Update)
- 既存のチェックのアップデートとなり、特定のリソースへの許可があるかどうかをチェックします
- 特定のリソースへのアクセス許可がある場合には
FAIL
、ない場合にはPASS
となります
こちらはコマンドラインまたは API 経由での呼び出しとなり、
チェックに成功した場合はPASS
、失敗した場合はFAIL
といった結果が返ります。
CheckNoPublicAccess の実際の例を見てみます。
まず下記の S3 バケットポリシーを考えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
上記はパブリックアクセスのあるポリシーなため下記コマンドを実行すると FAIL となります。
aws accessanalyzer check-no-public-access \ --policy-document file://bucket-policy.json \ --resource-type AWS::S3::Bucket --output json
下記のようにパブリックアクセスを無くすことで回避できます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
続いて CheckAccessNotGranted の例を見ていきます。
下記 IAM ポリシーを考えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] }
例えばこの場合は、your-bucket-name
という S3 バケットへのアクセス許可があるかどうか確認すると許可があるため FAIL となります。
recap-securebucket
という S3 バケットに対してアクセス許可があるかどうかだと許可がないため PASS となります。
以上のようにカスタムチェックポリシーを使用し事前にポリシーをチェックすることが可能となります。
まとめと注意事項
未使用のアクセスのアップデートは、今後より一層 IAM ロールやアクセスキーなどの棚卸に役立つような対処法を提示されるようになりました。
カスタムチェックポリシーについては、CI/CD などに組み込むことによってこれからデプロイされるポリシーが問題のないポリシーかどうかをチェックすることが可能となります。
ただし料金面で注意が必要なことと両方のアップデートがプレビュー版のため仕様変更される可能性があります。
おわりに
AWS re:Inforce 2024 の振り返りイベントである re:Cap セミナーの登壇資料を公開いたしました。
ぜひしっかりと re:Inforce のアップデートを復習いただき AWS セキュリティの知見を高めていただければと思います。
この記事がどなたかの役に立つと嬉しいです。