为 Amazon DocumentDB使用基于身份的策略(IAM 策略)

本主题提供了基于身份的策略的示例,在这些策略中,账户管理员可以向 IAM 身份(即:用户、组和角色)挂载权限策略。

重要

对于某些管理功能,Amazon DocumentDB 使用与 Amazon Relational Database Service (Amazon RDS) 共享的操作技术。Amazon DocumentDB 控制台、AWS CLI 和 API 调用均记录为对 Amazon RDS API 的调用。

我们建议您首先阅读以下介绍性主题,这些主题说明了管理对 Amazon DocumentDB 资源的访问的基本概念和选项。有关更多信息,请参阅管理 Amazon DocumentDB 资源的访问权限概述

本主题的各个部分涵盖以下内容:

以下是 IAM 策略的示例。

  1. {
  2. "Version": "2012-10-17",
  3. "Statement": [
  4. {
  5. "Sid": "AllowCreateDBInstanceOnly",
  6. "Effect": "Allow",
  7. "Action": [
  8. "rds:CreateDBInstance"
  9. ],
  10. "Resource": [
  11. "arn:aws:rds:*:123456789012:db:test*",
  12. "arn:aws:rds:*:123456789012:pg:cluster-pg:default*",
  13. "arn:aws:rds:*:123456789012:subgrp:default"
  14. ]
  15. }
  16. ]
  17. }

此策略包含一个为 IAM 用户指定以下权限的语句:

  • 该策略允许 IAM 用户使用 CreateDBInstance 操作创建实例(这还适用于 create-db-instance AWS CLI 操作和 AWS 管理控制台)。

  • Resource 元素指定用户可以执行操作的资源。使用 Amazon 资源名称 (ARN) 指定资源。此 ARN 包括资源所属的服务的名称 (rds)、AWS 区域(在此示例中,* 指示任何区域)、用户账号(在此示例中,123456789012 为用户 ID)以及资源的类型。

    该示例中的 Resource 元素为用户指定有关资源的以下策略限制:

    • 新实例的实例标识符必须以 test 开头(例如,testCustomerData1test-region2-data)。

    • 新实例的集群参数组必须以 default 开头。

    • 新实例的子网组必须是 default 子网组。

该策略不指定 Principal 元素,因为在基于身份的策略中,您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色挂载权限策略后,该角色的信任策略中标识的委托人获取权限。

有关显示所有 Amazon DocumentDB API 操作及其适用资源的表,请参阅 Amazon DocumentDB API 权限: 操作、资源和条件参考

使用 Amazon DocumentDB 控制台所需的权限

对于要使用 Amazon DocumentDB 控制台的用户,用户必须拥有一组最低权限。这些权限允许用户描述其 AWS 账户的 Amazon DocumentDB 资源并提供其他相关信息(包括 Amazon EC2 安全和网络信息)。

如果创建了比必需的最低权限更为严格的 IAM 策略,对于附加了该 IAM 策略的用户,控制台将无法按预期正常运行。为确保这些用户仍可使用 Amazon DocumentDB 控制台,也可向用户附加 AmazonDocDBConsoleFullAccess 托管策略,如适用于 Amazon DocumentDB 的 AWS 托管 (预定义) 策略中所述。

对于仅调用 AWS CLI 或 Amazon DocumentDB API 的用户,您不需要允许最低控制台权限。

适用于 Amazon DocumentDB 的 AWS 托管 (预定义) 策略

AWS 通过提供由 AWS 创建和管理的独立 IAM 策略来解决很多常用案例。托管策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅 IAM 用户指南 中的 AWS 托管策略

以下 AWS 托管策略(可以附加到您账户中的用户)是特定于 Amazon DocumentDB 的:

  • AmazonDocDBReadOnlyAccess – 授予对 AWS 根账户的所有 Amazon DocumentDB 资源的只读访问权限。

  • AmazonDocDBFullAccess – 授予对 AWS 根账户的所有 Amazon DocumentDB 资源的完全访问权限。

  • AmazonDocDBConsoleFullAccess – 使用 Amazon DocumentDB授予管理 AWS 管理控制台 资源所需的完全访问权限。

还可创建自定义 IAM 策略来允许用户访问必需的 Amazon DocumentDB 操作和资源。您可以将这些自定义策略附加到需要这些权限的 IAM 用户或组。

客户托管策略示例

本节的用户策略示例介绍如何授予各个 Amazon DocumentDB 操作的权限。当您使用 Amazon DocumentDB API 操作、AWS SDKs 或 AWS CLI 时,可以使用这些策略。当您使用控制台时,您需要授予特定于控制台的其他权限,使用 Amazon DocumentDB 控制台所需的权限中对此进行了讨论。

对于某些管理功能,Amazon DocumentDB 使用与 Amazon Relational Database Service (Amazon RDS) 和 Amazon Neptune 共享的操作技术。

注意

所有示例都使用 美国东部(弗吉尼亚北部) 区域 (us-east-1) 并且包含虚构账户 IDs。

示例 1:允许用户对任何 Amazon DocumentDB 资源执行任何 Describe 操作

以下权限策略向用户授予运行以 Describe 开头的所有操作的权限。 这些操作显示有关 Amazon DocumentDB 资源(如实例)的信息。Resource 元素中的通配符 (*) 表示可对该账户拥有的所有 Amazon DocumentDB 资源执行操作。

  1. {
  2. "Version":"2012-10-17",
  3. "Statement":[
  4. {
  5. "Sid":"AllowRDSDescribe",
  6. "Effect":"Allow",
  7. "Action":"rds:Describe*",
  8. "Resource":"*"
  9. }
  10. ]
  11. }

示例 2:防止用户删除实例

以下权限策略授予权限以防止用户删除特定实例。例如,您可能想禁止任何非管理员用户删除您的生产实例。

  1. {
  2. "Version":"2012-10-17",
  3. "Statement":[
  4. {
  5. "Sid":"DenyDelete1",
  6. "Effect":"Deny",
  7. "Action":"rds:DeleteDBInstance",
  8. "Resource":"arn:aws:rds:us-east-1:123456789012:db:my-db-instance"
  9. }
  10. ]
  11. }

示例 3: 除非启用了存储加密,否则禁止用户创建集群

以下权限策略拒绝用户创建 Amazon DocumentDB 集群的权限,除非启用了存储加密。

  1. {
  2. "Version": "2012-10-17",
  3. "Statement": [
  4. {
  5. "Sid": "PreventUnencryptedDocumentDB",
  6. "Effect": "Deny",
  7. "Action": "RDS:CreateDBCluster",
  8. "Condition": {
  9. "Bool": {
  10. "rds:StorageEncrypted": "false"
  11. },
  12. "StringEquals": {
  13. "rds:DatabaseEngine": "docdb"
  14. }
  15. },
  16. "Resource": "*"
  17. }
  18. ]
  19. }