Why Nostr? What is Njump?
2024-06-16 07:19:33

DevelopersIO RSS feed【非公式】 on Nostr: 【[アップデード]IAM Access ...

【[アップデード]IAM Access Analyzerのカスタムポリシーチェックでパブリックアクセスと重要リソースアクセスのチェックが追加されました! #AWSreInforce】
こんにちは、臼田です。 みなさん、アクセス権限のチェックしてますか?(挨拶 今回はAWS re:Infore 2024にてIAM Access Analyzerのカスタムポリシーチェックが拡張されたので解説します。 AWS IAM Access Analyzer now offers policy checks for public and critical resource access - AWS IAM Access Analyzer Update: Extending custom policy checks & guided revocation | AWS News Blog カスタムポリシーチェックとは? IAM Access Analyzerのカスタムポリシーチェックは前回のre:Invent 2023にて発表された機能です。  AWSを利用している際にはアクセス制御のために様々なポリシーを記述して利用します。例えばIAM UserやRoleに対して権限をアタッチするアイデンティティベースポリシー(IAM Policyやインラインポリシーなどのアクセス許可ポリシー)や、S3やIAM Roleに誰が(何が)アクセスすることを許可するか設定するためのリソースベースポリシー(S3: バケットポリシー、IAM Role: 信頼ポリシー)があります。 通常、新たに権限を追加したり、それを変更する作業は特権に近い作業ですから、誰でも簡単にできると困りますよね。然るべき人のチェックを受けながら、新しいユーザーのために権限を払い出したり、サービスにアタッチされた権限を慎重に変更していきます。 ではそのレビューは本当に正しく実行できるでしょうか? ポリシードキュメントはjsonで記述されていて複雑です。人の目でチェックしていると、ヌケモレがあるかもしれません。行数が減っている代わりに新しい権限が追加されていることが見逃されているかもしれません。diffを取ったらどうでしょうか?表記ブレや順番の変更など単純なdiffだと見なくていい場所が増えたりして、だんだんレビューが煩雑になるかもしれません。Allowだけ記述されていたポリシーから、AllowとDenyを組み合わせた別の表現方法にしたとき、それは本当に以前より権限が絞られているでしょうか? そんなときに利用できる機能がカスタムポリシーチェックです! 最初のリリースの際には下記2つのチェックが可能でした。 CheckNoNewAccess 新旧のポリシーを比較して、新しいアクセスが許可されているか確認する 権限を変更する際に権限が増えていないかという観点のチェックができる 権限が増えていないことを担保したり、増えていた場合にレビューのレベルを上げるなどの運用に利用できる アイデンティティベースポリシーとリソースベースポリシー両方に適用可能 CheckAccessNotGranted 単体のポリシーに対して指定したアクション(権限)が含まれているか確認する 与えたくない権限を与えていないか確認できる 特に変更系や削除系の権限などが含まれていないことを担保できる アイデンティティベースポリシーとリソースベースポリシー両方に適用可能 これらは自動推論を利用して、数学的に裏付けされたチェックがされるため、単純なdiffや目視での確認では担保しづらい確認を行えます。それぞれポリシーを実際のAWSリソースに展開する前に、ポリシードキュメントなどだけでチェックが可能なため、CI/CDのフローなどに組み込み、事前のチェックに利用可能です。 今回のアップデートでは、新しくCheckNoPublicAccessというチェックが加わり、CheckAccessNotGrantedに指定したリソースへのアクセスが含まれていないか確認できるようになりました。順番に見ていきましょう。 CheckNoPublicAccess 名前の通り、パブリックアクセスが含まれていないかチェックできます。 check-no-public-access — AWS CLI 2.16.9 Command Reference ざっくり説明は以下の通りです。 単体のポリシーに対してパブリックアクセスが許可されていないか確認する 外部に公開すべきでないリソースが確実に公開されていないことを担保できる リソースベースポリシーに適用可能 現状対応しているリソースは以下の通り AWS::DynamoDB::Table AWS::DynamoDB::Stream AWS::EFS::FileSystem AWS::OpenSearchService::Domain AWS::Kinesis::Stream AWS::Kinesis::StreamConsumer AWS::KMS::Key AWS::Lambda::Function AWS::S3::Bucket AWS::S3::AccessPoint AWS::S3Express::DirectoryBucket AWS::S3::Glacier AWS::S3Outposts::Bucket AWS::S3Outposts::AccessPoint AWS::SecretsManager::Secret AWS::SNS::Topic AWS::SQS::Queue AWS::IAM::AssumeRolePolicyDocument かなり幅広く対応していますね。おそらくリソースベースポリシーに対応していて外部公開が可能なリソースはすべて含んでいるのではないでしょうか?(たぶん、直感的にそんな気がします、調べてないけど) 利用していきたい主要なリソースはS3バケット、Lambdaあたりでしょうか。知らない間に公開されていると非常に困りますから、これを自動推論でチェックして担保できるのは非常に心強いです。 実際に使ってみましょう。 今回はS3バケットが公開されていないか確認してみましょう。 その前に、CloudShellを立ち上げてAWSCLIのバージョンをチェックします。 バージョンが古いですね。どうやらAWSCLIは2.16.6から本機能に対応していそうなので、バージョンを上げておきます。 AWS CLIの最新バージョンのインストールまたは更新 - AWS […]
https://dev.classmethod.jp/articles/iam-access-analyzer-check-public-access-and-resource-access/
Author Public Key
npub16u6jx85wavk5n0kw5r46ma7dunupsp7acmtn3xys7keqvlsfjxpsar5q5c