

# IAM Access Analyzer 支持的外部和内部访问资源类型
<a name="access-analyzer-resources"></a>

对于外部和内部访问分析器，IAM Access Analyzer 将分析应用于您启用了 IAM Access Analyzer 的区域中 AWS 资源的基于资源的策略。它仅分析基于资源的策略。有关 IAM Access Analyzer 如何为每种资源类型生成调查发现的详细信息，请查看资源类型信息。

**注意**  
列出的受支持资源类型适用于外部和内部访问分析器。内部访问分析器并不支持外部访问分析器支持的所有资源类型。未使用的访问分析器仅支持 IAM 用户和角色。有关更多信息，请参阅 [了解 IAM Access Analyzer 调查发现的工作原理](access-analyzer-concepts.md)。

## 支持的外部访问资源类型
<a name="access-analyzer-supported-external-resources"></a>
+ [Amazon Simple Storage Service 存储桶](#access-analyzer-s3)
+ [Amazon Simple Storage Service 目录存储桶](#access-analyzer-s3-directory)
+ [AWS Identity and Access Management 角色](#access-analyzer-iam-role)
+ [AWS Key Management Service 密钥](#access-analyzer-kms-key)
+ [AWS Lambda 函数和层](#access-analyzer-lambda)
+ [Amazon Simple Queue Service 队列](#access-analyzer-sqs)
+ [AWS Secrets Manager 密钥](#access-analyzer-secrets-manager)
+ [Amazon Simple Notification Service 主题](#access-analyzer-sns)
+ [Amazon Elastic Block Store 卷和快照](#access-analyzer-ebs)
+ [Amazon Relational Database Service 数据库快照](#access-analyzer-rds-db)
+ [Amazon Relational Database Service 数据库集群快照](#access-analyzer-rds-db-cluster)
+ [Amazon Elastic Container Registry 存储库](#access-analyzer-ecr)
+ [Amazon Elastic File System 文件系统](#access-analyzer-efs)
+ [Amazon DynamoDB Streams](#access-analyzer-ddb-stream)
+ [Amazon DynamoDB 表](#access-analyzer-ddb-table)

## 支持的内部访问资源类型
<a name="access-analyzer-supported-internal-resources"></a>
+ [Amazon Simple Storage Service 存储桶](#access-analyzer-s3)
+ [Amazon Simple Storage Service 目录存储桶](#access-analyzer-s3-directory)
+ [Amazon Relational Database Service 数据库快照](#access-analyzer-rds-db)
+ [Amazon Relational Database Service 数据库集群快照](#access-analyzer-rds-db-cluster)
+ [Amazon DynamoDB Streams](#access-analyzer-ddb-stream)
+ [Amazon DynamoDB 表](#access-analyzer-ddb-table)

## Amazon Simple Storage Service 存储桶
<a name="access-analyzer-s3"></a>

当 IAM Access Analyzer 为外部访问分析器分析 Amazon S3 存储桶时，它会在应用于存储桶的 Amazon S3 存储桶策略、访问控制列表 (ACL) 或接入点（包括多区域接入点）授予对外部实体的访问权限时生成调查发现。外部实体是可用于[创建筛选器](access-analyzer-findings-filter.md)（该筛选器不在信任区域内）的委托人或其他实体。例如，如果存储桶策略向其他账户授予访问权限或允许公共访问，则 IAM Access Analyzer 会生成结果。不过，如果您在存储桶上启用[阻止公共访问](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)设置，则可以阻止账户级别或存储桶级别的访问。

对于内部访问分析器，当您的组织或账户内的主体（用户或角色）有权访问指定的 Amazon S3 存储桶时，IAM Access Analyzer 会生成调查发现。

**注意**  
IAM Access Analyzer 不会分析附加到跨账户存取点的访问点策略，因为访问点及其策略位于分析器账户之外。当存储桶将访问权委托给跨账户存取点，且存储桶或账户未启用屏蔽公共访问权限时，IAM Access Analyzer 将生成一个公共结果。当您启用屏蔽公共访问权限时，公共结果将得到解析，且 IAM Access Analyzer 会为跨账户存取点生成跨账户结果。

Amazon S3 *屏蔽公共访问权限*设置将覆盖应用于存储桶的存储桶策略。这些设置还将覆盖应用于存储桶访问点的访问点策略。IAM Access Analyzer 会在策略发生更改时在存储桶级别分析屏蔽公共访问权限设置。但是，它仅评估账户级别的屏蔽公共访问权限设置（每 6 小时一次）。这意味着，IAM Access Analyzer 可能在最多 6 小时内无法为对存储桶的公共访问生成或解决结果。例如，如果您有允许公共访问的存储桶策略，则 IAM Access Analyzer 会为该访问生成结果。如果您随后启用屏蔽公共访问权限来阻止在账户级别对存储桶进行的所有公共访问，则 IAM Access Analyzer 在最多 6 小时内不会解析存储桶策略的结果，即使已阻止对存储桶的所有公共访问。一旦在账户级别启用了阻止公共访问后，解析跨账户存取点的公共结果也可能需要长达 6 个小时。在不更改存储桶策略的情况下更改资源控制策略（RCP）不会触发对调查发现中报告的存储桶进行重新扫描。IAM Access Analyzer 会在下一个定期扫描期间（24 小时内）分析新策略或更新后的策略。

对于多区域访问点，IAM Access Analyzer 会使用已建立的策略来生成查找结果。IAM Access Analyzer 每 6 小时评估一次对多区域访问点的更改。这意味着 IAM Access Analyzer 在 6 小时内不会生成或解析查找结果，即使您在此期间创建或删除了多区域访问点，或是更新了该访问点的策略。

## Amazon Simple Storage Service 目录存储桶
<a name="access-analyzer-s3-directory"></a>

Amazon S3 目录桶将数据分层组织到目录中，而不是通用存储桶的扁平存储结构，后者建议用于性能关键型工作负载或应用程序。对于外部访问分析器，IAM Access Analyzer 会分析允许外部实体访问目录存储桶的目录存储桶策略（包括策略中的条件语句）。

对于内部访问分析器，当您的组织或账户内的主体（用户或角色）有权访问指定的 Amazon S3 目录存储桶时，IAM Access Analyzer 会生成调查发现。

Amazon S3 目录存储桶还支持接入点，可对通过接入点向目录存储桶发出的所有请求强制执行不同的权限和网络控制。每个接入点都可以实施一种接入点策略，该策略与附加到底层目录存储桶的存储桶策略结合使用。通过目录存储桶的接入点，可以限制对特定前缀、API 操作或虚拟私有云 (VPC) 的访问权限。

**注意**  
IAM Access Analyzer 不会分析附加到跨账户存取点的访问点策略，因为访问点及其策略位于分析器账户之外。当存储桶将访问权委托给跨账户存取点，且存储桶或账户未启用屏蔽公共访问权限时，IAM Access Analyzer 将生成一个公共结果。当您启用屏蔽公共访问权限时，公共结果将得到解析，且 IAM Access Analyzer 会为跨账户存取点生成跨账户结果。

有关 Amazon S3 目录存储桶的更多信息，请参阅《Amazon Simple Storage Service 用户指南》中的[使用目录存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-overview.html)。

## AWS Identity and Access Management 角色
<a name="access-analyzer-iam-role"></a>

对于 IAM 角色，IAM Access Analyzer 将分析[信任策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#term_trust-policy)。在角色信任策略中，您可以定义您信任代入该角色的主体。角色信任策略是附加到 IAM 中角色所必需的基于资源的策略。IAM Access Analyzer 为信任区域内可由信任区域外的外部实体访问的角色生成查询结果。

**注意**  
IAM 角色是一类全局资源。如果角色信任策略向外部实体授予访问权限，则 IAM Access Analyzer 会在每个已启用的区域中生成结果。

## AWS Key Management Service 密钥
<a name="access-analyzer-kms-key"></a>

对于 AWS KMS keys，IAM Access Analyzer 将分析应用于密钥的密钥策略和授权。如果密钥策略或授权允许外部实体访问密钥，则 IAM Access Analyzer 会生成查询结果。例如，如果您在策略语句中使用 [kms:CallerAccount](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-caller-account) 条件键以允许访问特定 AWS 账户中的所有用户，并且您指定了当前账户（当前分析器的信任区域）以外的账户，则 IAM Access Analyzer 会生成结果。要了解有关 IAM policy 语句中的 AWS KMS 条件键的更多信息，请参阅 [AWS KMS 条件键](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awskeymanagementservice.html#awskeymanagementservice-policy-keys)。

在 IAM Access Analyzer 分析 KMS 密钥时，它会读取密钥元数据，例如密钥策略和授权列表。如果密钥策略不允许 IAM Access Analyzer 角色读取密钥元数据，则会生成“Access Denied (访问被拒绝)”错误结果。例如，如果以下示例策略语句是应用于密钥的唯一策略，则会导致 IAM Access Analyzer 中出现“Access denied (访问被拒绝)”错误结果。

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

由于此语句仅允许 AWS 账户 111122223333 中名为 *Admin* 的角色访问密钥，因此会生成“Access Denied (访问被拒绝)”错误结果，原因是 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 密钥时，为访问密钥而授予的权限取决于您创建密钥的方式。如果您收到密钥资源的“Access Denied (访问被拒绝)”错误结果，请将以下策略语句应用于密钥资源以向 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 密钥资源的“Access Denied (访问被拒绝)”结果，然后通过更新密钥策略来解决此结果后，此结果的状态将更新为“Resolved (已解决)”。如果存在向外部实体授予密钥权限的策略语句或密钥授权，您可能会看到密钥资源的其他结果。

## AWS Lambda 函数和层
<a name="access-analyzer-lambda"></a>

对于 AWS Lambda 函数，IAM Access Analyzer 会分析策略，包括策略中的条件语句，该策略将向外部实体授予对函数的访问权限。借助 Lambda，您可以将基于独有资源的策略附加到函数、版本、别名和层。IAM Access Analyzer 根据附加到函数和层的基于资源的策略报告外部访问。IAM Access Analyzer 不会根据附加到别名和使用合格 ARN 调用的特定版本的资源型策略报告外部访问。

有关更多信息，请参阅《AWS Lambda 开发人员指南》中的[将基于资源的策略用于 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html) 和[使用版本](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html#versioning-versions-using)。

## Amazon Simple Queue Service 队列
<a name="access-analyzer-sqs"></a>

对于 Amazon SQS 队列，IAM Access Analyzer 会分析允许外部实体访问队列的策略（包括策略中的条件语句）。

## AWS Secrets Manager 密钥
<a name="access-analyzer-secrets-manager"></a>

对于 AWS Secrets Manager 密钥，IAM Access Analyzer 会分析允许外部实体访问密钥的策略（包括策略中的条件语句）。

## Amazon Simple Notification Service 主题
<a name="access-analyzer-sns"></a>

IAM Access Analyzer 分析挂载到 Amazon SNS 主题的基于资源的策略，包括允许外部访问主题的策略中的条件语句。您可以允许外部账户通过基于资源的策略执行 Amazon SNS 操作，例如订阅和发布主题。如果来自信任区域之外的账户的主体可以对某个 Amazon SNS 主题执行操作，则可以从外部访问该主题。如果您在创建 Amazon SNS 主题时于策略中选择 `Everyone`，即表示该主题可供公众访问。 `AddPermission` 是向允许外部访问的 Amazon SNS 主题添加基于资源的策略的另一种方法。

## Amazon Elastic Block Store 卷和快照
<a name="access-analyzer-ebs"></a>

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 数据库快照
<a name="access-analyzer-rds-db"></a>

Amazon RDS 数据库快照没有基于资源的策略。通过 Amazon RDS 数据库权限共享数据库快照，并且只能共享手动数据库快照。对于外部访问分析器，IAM Access Analyzer 会分析允许外部实体访问 Amazon RDS DB 快照的访问控制列表。未加密的数据库快照可以公开。加密的数据库快照不能公开共享，但可以与最多 20 个其他账户共享。有关更多信息，请参阅[创建数据库快照](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html)。IAM Access Analyzer 将导出数据库手动快照（例如，导出到 Amazon S3 存储桶）的能力视为可信访问。

对于内部访问分析器，当您的组织或账户内的主体（用户或角色）有权访问指定的 Amazon RDS DB 快照时，IAM Access Analyzer 会生成调查发现。

**注意**  
IAM Access Analyzer 无法识别直接在数据库自身上配置的公共或跨账户访问权限。IAM Access Analyzer 仅识别在 Amazon RDS 数据库快照上配置的公共或跨账户访问的结果。

## Amazon Relational Database Service 数据库集群快照
<a name="access-analyzer-rds-db-cluster"></a>

Amazon RDS 数据库集群快照没有基于资源的策略。通过 Amazon RDS 数据库集群权限共享快照。对于外部访问分析器，IAM Access Analyzer 会分析允许外部实体访问 Amazon RDS DB 集群快照的访问控制列表。未加密的集群快照可以公开。加密的集群快照无法公开共享。未加密和加密的集群快照均可以与最多 20 个其他账户共享。有关更多信息，请参阅[创建数据库集群快照](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_CreateSnapshotCluster.html)。IAM Access Analyzer 将导出数据库集群快照（例如，导出到 Amazon S3 存储桶）的能力视为可信访问。

对于内部访问分析器，当您的组织或账户内的主体（用户或角色）有权访问指定的 Amazon RDS DB 集群快照时，IAM Access Analyzer 会生成调查发现。

**注意**  
IAM Access Analyzer 的结果不包括监控使用 AWS Resource Access Manager 与其他 AWS 账户 或组织共享 Amazon RDS 数据库集群和克隆。IAM Access Analyzer 仅识别在 Amazon RDS 数据库集群快照上配置的公共或跨账户访问的结果。

## Amazon Elastic Container Registry 存储库
<a name="access-analyzer-ecr"></a>

对于 Amazon ECR 存储库，IAM Access Analyzer 分析基于资源的策略，包括策略中允许外部实体访问存储库的条件语句（类似于其他资源类型，如 Amazon SNS 主题和 Amazon EFS 文件系统）。对于 Amazon ECR 存储库，主体必须通过基于身份的策略的获得 `ecr:GetAuthorizationToken` 的权限，才能被视为外部可用。

## Amazon Elastic File System 文件系统
<a name="access-analyzer-efs"></a>

对于 Amazon EFS 文件系统，IAM Access Analyzer 会分析允许外部实体访问文件系统的策略（包括策略中的条件语句）。如果来自信任区域之外的账户的主体可以在该文件系统上执行操作，则可以从外部访问 Amazon EFS 文件系统。访问权限由使用 IAM 的文件系统策略以及文件系统的安装方式定义。例如，将您的 Amazon EFS 文件系统安装到另一个账户视为可以从外部访问，除非该账户位于您的组织中，并且您已将该组织定义为信任区域。如果您从具有公有子网的虚拟私有云中安装文件系统，则该文件系统可以从外部访问。将 Amazon EFS 与 AWS Transfer Family 结合使用时，如果文件系统允许公共访问，则从 Transfer Family 服务器（由与文件系统不同的账户拥有）收到的文件系统访问请求将被阻止。

## Amazon DynamoDB Streams
<a name="access-analyzer-ddb-stream"></a>

对于外部访问分析器，如果 DynamoDB 策略允许至少一个允许外部实体访问 DynamoDB 流的跨账户操作，则 IAM Acccess Analyzer 会生成调查发现。有关 DynamoDB 支持的跨账户操作的更多信息，请参阅 Amazon DynamoDB 开发者指南中的[基于资源的策略支持的 IAM 操作](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)。

对于内部访问分析器，当您的组织或账户内的主体（用户或角色）有权访问指定的 DynamoDB 流时，IAM Access Analyzer 会生成调查发现。

## Amazon DynamoDB 表
<a name="access-analyzer-ddb-table"></a>

对于外部访问分析器，如果 DynamoDB 策略允许至少一个允许外部实体访问 DynamoDB 表或索引的跨账户操作，则 IAM Acccess Analyzer 会生成 DynamoDB 表的调查发现。有关 DynamoDB 支持的跨账户操作的更多信息，请参阅 Amazon DynamoDB 开发者指南中的[基于资源的策略支持的 IAM 操作](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)。

对于内部访问分析器，当您的组织或账户内的主体（用户或角色）有权访问指定的 DynamoDB 表时，IAM Access Analyzer 会生成调查发现。