

# ポリシーを検証するためのチェック
<a name="access-analyzer-checks-validating-policies"></a>

IAM Access Analyzer には、IAM ポリシーをエンティティにアタッチする前に検証するのに役立つポリシーチェックが備わっています。これには、[ポリシーの文法](reference_policies_grammar.md)や [AWS ベストプラクティス](best-practices.md)に照らしてポリシーを検証するためにポリシー検証によって提供されるポリシーチェックが含まれます。セキュリティ警告、エラー、一般的な警告、ポリシーの提案を含むポリシー検証チェックの結果を表示できます。

カスタムポリシーチェックを使用して、セキュリティ標準に基づいて新しいアクセスをチェックできます。料金は、新しいアクセスに対する各チェックに関連付けられます。価格設定の詳細については、「[IAM Access Analyzer pricing](https://aws.amazon.com/iam/access-analyzer/pricing)」を参照してください。

## カスタムポリシーチェックの仕組み
<a name="access-analyzer-custom-policy-checks-overview"></a>

AWS Identity and Access Management Access Analyzer カスタムポリシーチェックを使用して、指定したセキュリティ標準に照らしてポリシーを検証できます。次の種類のカスタムポリシーチェックを実行できます。
+ **参照ポリシーに対するチェック**: ポリシーを編集するときに、更新したポリシーで新しいアクセス権限が付与されるかどうかを、参照ポリシー (既存のバージョンのポリシーなど) との比較で確認できます。このチェックは、AWS Command Line Interface (AWS CLI)、IAM Access Analyzer API (API)、または IAM コンソールの JSON ポリシーエディタを使用してポリシーを編集するときに実行できます。
**注記**  
IAM Access Analyzer のカスタムポリシーチェックでは、リファレンスリソースポリシーの `Principal` 要素でワイルドカードを使用できます。
+ **IAM アクションまたはリソースのリストに対するチェック**: 特定の IAM アクションまたはリソースがポリシーで許可されていないかどうかを確認できます。アクションのみを指定した場合、IAM Access Analyzer はポリシー内のすべてのリソースに対するアクションのアクセスをチェックします。リソースのみを指定した場合、IAM Access Analyzer は、どのアクションで指定したリソースにアクセスできるかをチェックします。アクションとリソースの両方を指定した場合、IAM Access Analyzer は、指定したアクションのどれで指定したリソースにアクセスできるかをチェックします。このチェックは、AWS CLI または API を使用してポリシーを作成または編集するときに実行できます。
+ **パブリックアクセスのチェック**: リソースポリシーで指定したリソースタイプへのパブリックアクセスを許可できるかどうかを確認できます。このチェックは、AWS CLI または API を使用してポリシーを作成または編集するときに実行できます。この種類のカスタムポリシーチェックは、チェックにアカウントまたは外部アクセスアナライザーコンテキストを必要としないため、[アクセスのプレビュー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html)とは異なります。アクセスプレビューでは、リソースに対するアクセス許可をデプロイする前に IAM Access Analyzer の検出結果をプレビューできます。一方、カスタムチェックでは、ポリシーによってパブリックアクセスが許可されているかどうかを判別します。

料金は、各カスタムポリシーチェックに関連付けられます。価格設定の詳細については、「[IAM Access Analyzer pricing](https://aws.amazon.com/iam/access-analyzer/pricing)」を参照してください。

カスタムポリシーチェックは、ID ベースおよびリソースベースのポリシーに対して実行できます。カスタムポリシーチェックでは、新しいアクセスまたは指定されたアクセスがポリシーによって許可されているかどうかを判別する際に、パターンマッチング技術やアクセスログの検証を使用しません。外部アクセスの検出結果と同様に、カスタムポリシーチェックは [Zelkova](https://aws.amazon.com/blogs/security/protect-sensitive-data-in-the-cloud-with-automated-reasoning-zelkova/) 上に構築されています。Zelkova は、IAM ポリシーを同等の論理ステートメントに変換し、問題に対して汎用および特殊な論理ソルバー (充足可能性モジュロ理論) のスイートを実行します。新しいアクセスや指定されたアクセスをチェックするために、IAM Access Analyzer は Zelkova をポリシーに繰り返し適用します。クエリは、ポリシーの内容に基づいてポリシーが許可する動作のクラスを特徴付けるために、ますます具体的になります。充足可能性モジュロ理論の詳細については、「[Satisfiability Modulo Theories](https://people.eecs.berkeley.edu/~sseshia/pubdir/SMT-BookChapter.pdf)」を参照してください。

まれに、IAM Access Analyzer は、ポリシーステートメントが新しいアクセスや指定されたアクセスを許可できるかどうかを完全に判別できない場合があります。このような場合は、カスタムポリシーチェックに失敗することによって、安全のために、誤りであっても陽性を宣言すること (偽陽性) を選択します。IAM Access Analyzer は、包括的なポリシー評価を提供するように設計されており、偽陰性が最小限に抑えられます。このアプローチにより、IAM Access Analyzer では、チェックに合格した場合はポリシーによってアクセスが許可されなかったことを意味するということが高度に保証されます。IAM Access Analyzer からのレスポンスで報告されたポリシーステートメントを確認することで、失敗したチェックを手動で調べることができます。

## 新しいアクセスをチェックするための参照ポリシーの例
<a name="access-analyzer-custom-policy-checks-reference"></a>

GitHub の「[IAM Access Analyzer custom policy checks samples](https://github.com/aws-samples/iam-access-analyzer-custom-policy-check-samples)」リポジトリで、参照ポリシーの例を入手し、新しいアクセス用のカスタムポリシーチェックをセットアップして実行する方法を学習できます。

**これらの例を使用する前に**  
これらのサンプルリファレンスポリシーを使用する前に、次の手順を実行してください。  
固有要件に応じて、参照ポリシーを慎重にレビューしてカスタマイズします。
使用する AWS のサービスが含まれる環境で、参照ポリシーを十分にテストします。  
参照ポリシーは、カスタムポリシーチェックの実装と使用を示します。これらの例は、公式な AWS 推奨事項やベストプラクティスとして解釈されることを意図したものでは***ありません***。お客様の環境のセキュリティ要件を解決するために適切であるかどうかについては、お客様の責任で参照ポリシーを慎重にテストしてください。
カスタムポリシーチェックの分析は環境に依存しません。この分析では、入力ポリシーに含まれる情報のみが考慮されます。例えば、カスタムポリシーチェックでは、アカウントが特定の AWS 組織のメンバーであるかどうかは確認できません。そのため、カスタムポリシーチェックでは、[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) 条件キーおよび [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) 条件キーの値に基づいて新しいアクセスを比較することはできません。

## 失敗したカスタムポリシーチェックを検査する
<a name="access-analyzer-custom-policy-checks-failed-check"></a>

カスタムポリシーチェックが失敗した場合、IAM Access Analyzer からのレスポンスには、チェックが失敗した原因となったポリシーステートメントの[ステートメント ID (`Sid`)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) が含まれます。ステートメント ID はオプションのポリシー要素ですが、すべてのポリシーステートメントにステートメント ID を追加することが推奨されます。カスタムポリシーチェックでは、チェックが失敗した理由を特定するのに役立つステートメントインデックスも返されます。ステートメントインデックスはゼロベースの番号付けに従い、最初のステートメントは 0 として参照されます。チェックが失敗する原因となったステートメントが複数ある場合、チェックでは一度に 1 つのステートメント ID のみが返されます。理由の中で強調表示されているステートメントを修正し、合格するまでチェックを再実行することを推奨します。