外部アクセスの IAM Access Analyzer リソースタイプ - AWS Identity and Access Management

外部アクセスの IAM Access Analyzer リソースタイプ

外部アクセスアナライザーの場合、IAM Access Analyzer は、IAM Access Analyzer を有効にしたリージョンで AWS リソースに適用されているリソースベースのポリシーを分析します。分析されるのは、リソースベースのポリシーのみです。IAM Access Analyzer が各リソースタイプの結果を生成する方法の詳細については、各リソースに関する情報を参照してください。

注記

リストされているサポート対象のリソースタイプは、外部アクセスアナライザー用です。未使用のアクセスアナライザーは、IAM ユーザーとロールのみをサポートします。詳細については、「結果を使用する」を参照してください。

Amazon Simple Storage Service バケット

IAM Access Analyzer が Amazon S3 バケットを分析するときは、バケットに適用された Amazon S3 バケットポリシー、ACL、またはアクセスポイント (マルチリージョンアクセスポイントを含む) が外部エンティティにアクセス権を付与する場合に結果を生成します。外部エンティティは、フィルタの作成に使用できる、信頼ゾーン外のプリンシパルや他のエンティティです。例えば、バケットポリシーが別のアカウントにアクセスを許可したり、パブリックアクセスを許可したりすると、IAM Access Analyzer は結果を生成します。ただし、バケットでパブリックアクセスのブロックを有効にすると、アカウントレベルまたはバケットレベルでアクセスをブロックできます。

注記

IAM Access Analyzer は、クロスアカウントアクセスポイントにアタッチされたアクセスポイントポリシーを分析しません。これは、対象のアクセスポイントとポリシーが、アナライザーのアカウント外にあるためです。IAM Access Analyzer は、バケットからクロスアカウントアクセスポイントへのアクセスが委任され、そのバケットまたはアカウントでパブリックアクセスのブロックが有効になっていない場合に、結果を生成し公開します。パブリックアクセスのブロックを有効にしている場合、この公開結果は解決されます。また、IAM Access Analyzer により、クロスアカウントアクセスポイントでのアカウント間の結果が生成されます。

Amazon S3 でのパブリックアクセスのブロック設定は、バケットに適用されているバケットポリシーより優先されます。また、この設定は、バケットのアクセスポイントに適用されているアクセスポイントポリシーを上書きします。IAM Access Analyzer は、ポリシーが変更されるたびに、パブリックアクセスのブロックの設定を、バケットレベルで分析します。また、6 時間ごとに 1 回のみアカウントレベルで、パブリックアクセスのブロックに関する設定の評価を行います。つまり、最大 6 時間、IAM Access Analyzer はバケットへのパブリックアクセスに関する結果を生成または解決しない場合があります。例えば、パブリックアクセスを許可するバケットポリシーがある場合、IAM Access Analyzer はそのアクセスに関する結果を生成します。その後、パブリックアクセスのブロックを有効化し、バケットへのすべてのパブリックアクセスを (アカウントレベルで) ブロックすると、パブリックアクセスがまったくない状態であっても、IAM Access Analyzer は、そのバケットのポリシーに関する結果を最大 6 時間解決しません。アカウントレベルでパブリックアクセスのブロックを有効化した後は、クロスアカウントアクセスポイントで公開された結果の解決にも、最大6時間かかる場合があります。

マルチリージョンアクセスポイントの場合、IAM Access Analyzer は、結果の生成に確立されたポリシーを使用します。IAM Access Analyzer は、マルチリージョンアクセスポイントに対する変更を 6 時間ごとに 1 回評価します。つまり、マルチリージョンアクセスポイントの作成もしくは削除、またはそのポリシーの更新を行った場合でも、IAM Access Analyzer は結果の生成または解決を最大 6 時間実行しないことになります。

Amazon Simple Storage Service ディレクトリバケット

Amazon S3 ディレクトリバケットは Amazon S3 Express One ストレージクラスを使用します。これは、パフォーマンスが重要なワークロードやアプリケーションに推奨されます。Amazon S3 ディレクトリバケットの場合、IAM Access Analyzer は外部エンティティに対してディレクトリバケットへのアクセスを許可するためのディレクトリバケットポリシー (ポリシー内の条件ステートメントを含む) を分析します。Amazon S3 ディレクトリバケットの詳細については、「Amazon Simple Storage Service ユーザーガイド」の「Directory buckets」を参照してください。

AWS Identity and Access Management ロール

IAM ロールの場合、IAM Access Analyzer は信頼ポリシーを分析します。ロールの信頼ポリシーでは、ロールを引き受けるために信頼するプリンシパルを定義します。ロールの信頼ポリシーは、IAM のロールに添付される必須のリソースベースのポリシーです。IAM Access Analyzer は、信頼ゾーン外の外部エンティティからアクセスできる信頼ゾーン内のロールに関する結果を生成します。

注記

IAM ロールはグローバルリソースです。ロールの信頼ポリシーが外部エンティティにアクセスを許可すると、IAM Access Analyzer は有効な各リージョンで結果を生成します。

AWS Key Management Service キー

AWS KMS keys の場合、IAM Access Analyzer はキーポリシーとキーに適用された許可を分析します。IAM Access Analyzer は、外部エンティティに対してキーへのアクセスを許可すると、結果を生成します。例えば、ポリシーステートメントで kms:CallerAccount 条件キーを使用して、特定の AWS アカウントですべてのユーザーへのアクセスを許可し、現在のアカウント (現在のアナライザーの信頼ゾーン) 以外のアカウントを指定すると、IAM Access Analyzer は結果を生成します。AWS KMS IAM ポリシーステートメントにおける条件キーの詳細については、「AWS KMS 条件キー」を参照してください。

IAM Access Analyzer は、KMS キーを分析することで、キーポリシーや許可のリストなど、キーのメタデータを読み取ります。キーポリシーが IAM Access Analyzer ロールに対してキーのメタデータの読み取りを許可しない場合、結果としてアクセス拒否エラーが生成されます。例えば、以下のポリシーステートメント例がキーに適用されている唯一のポリシーである場合は、IAM Access Analyzer でアクセス拒否エラーの結果が生成されることになります。

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Admin" }, "Action": "kms:*", "Resource": "*" }

このステートメントでは、AWS アカウント 111122223333 の「Admin」という名前のロールのみがキーへのアクセスを許可されるため、IAM Access Analyzer はキーを完全には分析できず、結果としてアクセス拒否エラーが生成されます。エラーの結果は、[Findings (結果)] テーブルに赤いテキストで表示されます。結果は以下のようになります。

{ "error": "ACCESS_DENIED", "id": "12345678-1234-abcd-dcba-111122223333", "analyzedAt": "2019-09-16T14:24:33.352Z", "resource": "arn:aws:kms:us-west-2:1234567890:key/1a2b3c4d-5e6f-7a8b-9c0d-1a2b3c4d5e6f7g8a", "resourceType": "AWS::KMS::Key", "status": "ACTIVE", "updatedAt": "2019-09-16T14:24:33.352Z" }

KMS キーを作成する場合、キーにアクセスするために付与されるアクセス許可は、キーの作成方法によって異なります。キーリソースへのアクセス拒否エラーが結果として返された場合は、次のポリシーステートメントをキーリソースに適用して、キーへのアクセス許可を IAM Access Analyzer に付与します。

{ "Sid": "Allow IAM Access Analyzer access to key metadata", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer" }, "Action": [ "kms:DescribeKey", "kms:GetKeyPolicy", "kms:List*" ], "Resource": "*" },

KMS キーリソースへのアクセス拒否が結果として返された場合、キーポリシーを更新して結果を解決すると、結果は解決済みの状態に更新されます。外部エンティティに対してキーへのアクセスを許可するポリシーステートメントやキー付与がある場合、キーリソースに関する追加の結果が表示されることがあります。

AWS Lambda の関数とレイヤー

AWS Lambda 関数の場合、IAM Access Analyzer は、外部エンティティに対して関数へのアクセスを許可するポリシー (ポリシー内の条件ステートメントを含む) を分析します。IAM Access Analyzerは、AWS Lambda API の AddPermission オペレーションを EventSourceToken で使用するときに付与されたアクセス許可も分析します。

Amazon Simple Queue Service キュー

Amazon SQS キューの場合、IAM Access Analyzer は外部エンティティに対してキューへのアクセスを許可するポリシー (ポリシー内の条件ステートメントを含む) を分析します。

AWS Secrets Manager シークレット

AWS Secrets Manager シークレットの場合、IAM Access Analyzer は外部エンティティにシークレットへのアクセスを許可するポリシー (ポリシー内の条件ステートメントを含む) を分析します。

Amazon Simple Notification Service トピック

IAM Access Analyzer は、Amazon SNS トピックにアタッチされたリソースベースのポリシーを分析します。これには、外部からのトピックへのアクセスを許可するポリシー内の条件ステートメントが含まれます。リソースベースのポリシーを使用して、トピックのサブスクライブや発行などの Amazon SNS アクションの実行を外部アカウントに許可できます。信頼ゾーン外のアカウントからのプリンシパルが Amazon SNS トピックに対して操作を実行できる場合、そのトピックは外部からのアクセスが可能です。Amazon SNS トピックの作成時にポリシーで Everyone を選択すると、そのトピックは一般公開されます。AddPermission は、外部アクセスを許可するリソースベースのポリシーを Amazon SNS トピックに追加するもう 1 つの方法です。

Amazon Elastic Block Store ボリュームスナップショット

Amazon Elastic Block Store ボリュームスナップショットにリソースベースのポリシーはありません。スナップショットは Amazon EBS の共有アクセス許可を通じて共有されます。Amazon EBS ボリュームスナップショットの場合、IAM Access Analyzer は外部エンティティによるスナップショットへのアクセスを許可するアクセスコントロールリストを分析します。Amazon EBS ボリュームスナップショットは、暗号化されている場合に外部アカウントと共有できます。暗号化されていないボリュームスナップショットは、外部アカウントと共有してパブリックアクセス権を付与することができます。共有設定は、スナップショットの CreateVolumePermissions 属性にあります。お客様が Amazon EBS スナップショットの外部アクセスをプレビューするときは、スナップショットが暗号化されていることを示すものとして、暗号化キーを指定することができます。これは、IAM Access Analyzer プレビューが Secrets Manager シークレットを処理する方法に似ています。

Amazon Relational Database Service DB スナップショット

Amazon RDS DB スナップショットにリソースベースのポリシーはありません。DB スナップショットは Amazon RDS データベースのアクセス許可を通じて共有され、共有できるのは手動の DB スナップショットのみです。Amazon RDS DB スナップショットの場合、IAM Access Analyzer は外部エンティティによるスナップショットへのアクセスを許可するアクセスコントロールリストを分析します。暗号化されていない DB スナップショットはパブリックにすることができます。暗号化された DB スナップショットをパブリック共有することはできませんが、最大 20 個の他のアカウントと共有できます。詳細については、「DB スナップショットの作成」を参照してください。IAM Access Analyzer は、データベースの手動スナップショットを Amazon S3 バケットなどにエクスポートする機能を、信頼できるアクセスと見なします。

注記

IAM Access Analyzer は、データベース自体に直接設定されたパブリックまたはクロスアカウントアクセスを識別しません。IAM Access Analyzer は、Amazon RDS DB スナップショットに設定されたパブリックまたはクロスアカウントアクセスの結果のみを識別します。

Amazon Relational Database Service DB クラスタースナップショット

Amazon RDS DB クラスタースナップショットにリソースベースのポリシーはありません。スナップショットは Amazon RDS DB クラスターのアクセス許可を通じて共有されます。Amazon RDS DB クラスターの場合、IAM Access Analyzer は外部エンティティによるスナップショットへのアクセスを許可するアクセスコントロールリストを分析します。暗号化されていないクラスタースナップショットはパブリックにすることができます。暗号化されたクラスタースナップショットをパブリック共有することはできません。暗号化されていないクラスタースナップショットと暗号化されたクラスタースナップショットは、どちらも最大 20 個の他のアカウントと共有できます。詳細については、「DB クラスタースナップショットの作成」を参照してください。IAM Access Analyzer は、DB クラスタースナップショットを Amazon S3 バケットなどにエクスポートする機能を、信頼できるアクセスと見なします。

注記

IAM Access Analyzer の結果には、AWS Resource Access Manager を使用した Amazon RDS DB クラスターおよびクローンの別の AWS アカウントまたは組織との共有のモニタリングは含まれません。IAM Access Analyzer は、Amazon RDS DB クラスタースナップショットに設定されたパブリックまたはクロスアカウントアクセスの結果のみを識別します。

Amazon Elastic Container Registry リポジトリ

Amazon ECR リポジトリの場合、IAM Access Analyzer はリソースベースのポリシーを分析します。これには、外部エンティティによるリポジトリへのアクセスを許可するポリシー内の条件ステートメントが含まれます (Amazon SNS トピックおよび Amazon EFS ファイルシステムといった他のリソースタイプと同様です)。Amazon ECR リポジトリの場合、外部からの利用が可能であるとみなされるには、プリンシパルがアイデンティティベースのポリシーを通じて ecr:GetAuthorizationToken へのアクセス許可を持っている必要があります。

Amazon Elastic File System ファイルシステム

Amazon EFS ファイルシステムの場合、IAM Access Analyzer はポリシーを分析します。これには、外部エンティティによるファイルシステムへのアクセスを許可するポリシーの条件ステートメントが含まれます。信頼ゾーン外のアカウントからのプリンシパルが Amazon EFS ファイルシステムに対して操作を実行できる場合、そのファイルシステムは外部からのアクセスが可能です。アクセス権は、IAM を使用するファイルシステムポリシー、およびファイルシステムのマウント方法によって定義されます。例えば、Amazon EFS ファイルシステムを別のアカウントにマウントすると、そのアカウントが組織内にあり、その組織を信頼ゾーンとして定義した場合を除き、外部からのアクセスが可能であると見なされます。パブリックサブネットを持つ仮想プライベートクラウドからファイルシステムをマウントする場合、そのファイルシステムは外部からのアクセスが可能です。Amazon EFS を AWS Transfer Family で使用する場合、ファイルシステムがパブリックアクセスを許可していると、ファイルシステムとは異なるアカウントが所有する Transfer Family サーバーから受信したファイルシステムのアクセス要求がブロックされます。

Amazon DynamoDB Streams

外部エンティティが DynamoDB ストリームにアクセスすることを許可するクロスアカウントアクションが DynamoDB ポリシーによって少なくとも 1 つ許可される場合、IAM Access Analyzer は検出結果を生成します。DynamoDB でサポートされるクロスアカウントアクションの詳細については、「Amazon DynamoDB デベロッパーガイド」の「リソースベースのポリシーでサポートされる IAM アクション」を参照してください。

Amazon DynamoDB テーブル

DynamoDB ポリシーで外部エンティティが DynamoDB テーブルまたはインデックスにアクセスすることを許可するクロスアカウントアクションを少なくとも 1 つ許可している場合、IAM Access Analyzer は、DynamoDB テーブルの検出結果を生成します。DynamoDB でサポートされるクロスアカウントアクションの詳細については、「Amazon DynamoDB デベロッパーガイド」の「リソースベースのポリシーでサポートされる IAM アクション」を参照してください。