IAM Access Analyzer カスタムポリシーチェック
AWS Identity and Access Management Access Analyzer カスタムポリシーチェックを使用して、指定したセキュリティ標準に照らしてポリシーを検証できます。次の種類のカスタムポリシーチェックを実行できます。
-
参照ポリシーに対するチェック: ポリシーを編集するときに、更新したポリシーで新しいアクセス権限が付与されるかどうかを、参照ポリシー (既存のバージョンのポリシーなど) との比較で確認できます。このチェックは、AWS Command Line Interface (AWS CLI)、IAM Access Analyzer API (API)、または IAM コンソールの JSON ポリシーエディタを使用してポリシーを編集するときに実行できます。
-
IAM アクションまたはリソースのリストに対するチェック: 特定の IAM アクションまたはリソースがポリシーで許可されていないかどうかを確認できます。アクションのみを指定した場合、IAM Access Analyzer はポリシー内のすべてのリソースに対するアクションのアクセスをチェックします。リソースのみを指定した場合、IAM Access Analyzer は、どのアクションで指定したリソースにアクセスできるかをチェックします。アクションとリソースの両方を指定した場合、IAM Access Analyzer は、指定したアクションのどれで指定したリソースにアクセスできるかをチェックします。このチェックは、AWS CLI または API を使用してポリシーを作成または編集するときに実行できます。
-
パブリックアクセスのチェック: リソースポリシーで指定したリソースタイプへのパブリックアクセスを許可できるかどうかを確認できます。このチェックは、AWS CLI または API を使用してポリシーを作成または編集するときに実行できます。この種類のカスタムポリシーチェックは、チェックにアカウントまたは外部アクセスアナライザーコンテキストを必要としないため、アクセスのプレビューとは異なります。アクセスプレビューでは、リソースに対するアクセス許可をデプロイする前に IAM Access Analyzer の検出結果をプレビューできます。一方、カスタムチェックでは、ポリシーによってパブリックアクセスが許可されているかどうかを判別します。
料金は、各カスタムポリシーチェックに関連付けられます。価格設定の詳細については、「IAM Access Analyzer pricing
カスタムポリシーチェックの仕組み
カスタムポリシーチェックは、ID ベースおよびリソースベースのポリシーに対して実行できます。カスタムポリシーチェックでは、新しいアクセスまたは指定されたアクセスがポリシーによって許可されているかどうかを判別する際に、パターンマッチング技術やアクセスログの検証を使用しません。外部アクセスの検出結果と同様に、カスタムポリシーチェックは Zelkova
まれに、IAM Access Analyzer は、ポリシーステートメントが新しいアクセスや指定されたアクセスを許可できるかどうかを完全に判別できない場合があります。このような場合は、カスタムポリシーチェックに失敗することによって、安全のために、誤りであっても陽性を宣言すること (偽陽性) を選択します。IAM Access Analyzer は、包括的なポリシー評価を提供するように設計されており、偽陰性が最小限に抑えられます。このアプローチにより、IAM Access Analyzer では、チェックに合格した場合はポリシーによってアクセスが許可されなかったことを意味するということが高度に保証されます。IAM Access Analyzer からのレスポンスで報告されたポリシーステートメントを確認することで、失敗したチェックを手動で調べることができます。
新しいアクセスをチェックするための参照ポリシーの例
GitHub の「IAM Access Analyzer custom policy checks samples
これらの例を使用する前に
これらのサンプルリファレンスポリシーを使用する前に、次の手順を実行してください。
-
固有要件に応じて、参照ポリシーを慎重にレビューしてカスタマイズします。
-
使用する AWS のサービスが含まれる環境で、参照ポリシーを十分にテストします。
参照ポリシーは、カスタムポリシーチェックの実装と使用を示します。これらの例は、公式な AWS 推奨事項やベストプラクティスとして解釈されることを意図したものではありません。お客様の環境のセキュリティ要件を解決するために適切であるかどうかについては、お客様の責任で参照ポリシーを慎重にテストしてください。
-
カスタムポリシーチェックの分析は環境に依存しません。この分析では、入力ポリシーに含まれる情報のみが考慮されます。例えば、カスタムポリシーチェックでは、アカウントが特定の AWS 組織のメンバーであるかどうかは確認できません。そのため、カスタムポリシーチェックでは、
aws:PrincipalOrgId
条件キーおよびaws:PrincipalAccount
条件キーの値に基づいて新しいアクセスを比較することはできません。
失敗したカスタムポリシーチェックの検査
カスタムポリシーチェックが失敗した場合、IAM Access Analyzer からのレスポンスには、チェックが失敗した原因となったポリシーステートメントのステートメント ID (Sid
) が含まれます。ステートメント ID はオプションのポリシー要素ですが、すべてのポリシーステートメントにステートメント ID を追加することが推奨されます。カスタムポリシーチェックでは、チェックが失敗した理由を特定するのに役立つステートメントインデックスも返されます。ステートメントインデックスはゼロベースの番号付けに従い、最初のステートメントは 0 として参照されます。チェックが失敗する原因となったステートメントが複数ある場合、チェックでは一度に 1 つのステートメント ID のみが返されます。理由の中で強調表示されているステートメントを修正し、合格するまでチェックを再実行することを推奨します。
カスタムポリシーチェックによるポリシーの検証 (コンソール)
オプションのステップとして、IAM コンソールの JSON ポリシーエディタでポリシーを編集するときに、カスタムポリシーチェックを実行できます。更新したポリシーで新しいアクセス権限が付与されるかどうかを、既存のバージョンとの比較で確認できます。
IAM JSON ポリシーの編集時に新しいアクセスをチェックする方法
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
左側のナビゲーションペインで、[ポリシー] を選択します。
-
ポリシーのリストで、編集するポリシーのポリシー名を選択します。検索ボックスを使用して、ポリシーのリストをフィルタリングできます。
-
[アクセス許可] タブを選択し、[編集] を選択します。
-
[JSON] オプションを選択し、ポリシーを更新します。
-
ポリシーの下にあるポリシー検証ペインで、[新しいアクセス権限の確認] タブを選択し、[ポリシーの確認] を選択します。変更したアクセス許可によって新しいアクセス権限が付与されると、ポリシー検証ペインでそのステートメントが強調表示されます。
-
新しいアクセス権限を付与する予定がない場合は、ポリシーステートメントを更新し、新しいアクセスが検出されなくなるまで [ポリシーの確認] を選択します。
注記
料金は、新しいアクセスに対する各チェックに関連付けられます。価格設定の詳細については、「IAM Access Analyzer pricing
」を参照してください。 -
[Next] を選択します。
-
[確認と保存] ページで [このポリシーで定義されている許可] を確認して、[変更の保存] を選択します。
カスタムポリシーチェックによるポリシーの検証 (AWS CLI または API)
AWS CLI または IAM Access Analyzer API から IAM Access Analyzer のカスタムポリシーチェックを実行できます。
IAM Access Analyzer のカスタムポリシーチェックを実行する方法 (AWS CLI)
-
既存のポリシーと比較して、更新されたポリシーで新しいアクセスが許可されるかどうかを確認するには、check-no-new-access コマンドを実行します。
-
指定したアクセスがポリシーによって許可されていないかどうかを確認するには、check-access-not-granted コマンドを実行します。
-
リソースポリシーで指定したリソースタイプへのパブリックアクセスを許可できるかどうかを確認するには、コマンド check-no-public-access を実行します。
IAM Access Analyzer のカスタムポリシーチェックを実行する方法 (API)
-
既存のポリシーと比較して、更新されたポリシーで新しいアクセスが許可されるかどうかを確認するには、CheckNoNewAccess API オペレーションを使用します。
-
指定したアクセスがポリシーによって許可されていないかどうかを確認するには、CheckAccessNotGranted API オペレーションを使用します。
-
リソースポリシーで指定したリソースタイプへのパブリックアクセスを許可できるかどうかを確認するには、CheckNoPublicAccess API オペレーションを使用します。