View a markdown version of this page

MemoryDB 如何与 IAM 协同工作 - Amazon MemoryDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MemoryDB 如何与 IAM 协同工作

在使用 IAM 管理对 MemoryDB 的访问之前,您应该了解哪些 IAM 功能可用于 MemoryDB。

可以与 MemoryDB 一起使用的 IAM 特征
IAM 功能 MemoryDB 支持

Identity-based 政策

Resource-based 政策

策略操作

策略资源

策略条件键

ACL

ABAC(策略中的标签)

临时凭证

主体权限

服务角色

Service-linked 角色

要详细了解 MemoryDB 和其他 AWS 服务如何与大多数 IAM 功能配合使用,请参阅 IAM 用户指南中的与 IAM 配合使用的AWS 服务。

Identity-based MemoryDB 的策略

支持基于身份的策略:

Identity-based 策略是 JSON 权限策略文档,您可以将其附加到身份,例如 IAM 用户、用户组或角色。这些策略控制用户和角色可在何种条件下对哪些资源执行哪些操作。要了解如何创建基于身份的策略,请参阅《IAM 用户指南》中的使用客户管理型策略定义自定义 IAM 权限

通过使用 IAM 基于身份的策略,您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。要了解可在 JSON 策略中使用的所有元素,请参阅《IAM 用户指南》中的 IAM JSON 策略元素引用

Identity-based MemoryDB 的策略示例

要查看 MemoryDB 基于身份的策略的示例,请参阅 Identity-based MemoryDB 的策略示例

Resource-based MemoryDB 中的策略

支持基于资源的策略:

Resource-based 策略是您附加到资源的 JSON 策略文档。基于资源的策略的示例包括 IAM 角色信任策略和 Amazon S3 存储桶策略。在支持基于资源的策略的服务中,服务管理员可以使用它们来控制对特定资源的访问。对于在其中附加策略的资源,策略定义指定主体可以对该资源执行哪些操作以及在什么条件下执行。您必须在基于资源的策略中指定主体。委托人可以包括账户、用户、角色、联合用户或 AWS 服务。

要启用跨账户访问,您可以将整个账户或其它账户中的 IAM 实体指定为基于资源的策略中的主体。有关更多信息,请参阅《IAM 用户指南》中的 IAM 中的跨账户资源访问

适用于 MemoryDB 的策略操作

支持策略操作:

管理员可以使用 AWS JSON 策略来指定谁有权访问哪些内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

JSON 策略的 Action 元素描述可用于在策略中允许或拒绝访问的操作。在策略中包含操作以授予执行关联操作的权限。

要查看 MemoryDB 操作的列表,请参阅《服务授权参考》中的 MemoryDB 定义的操作

MemoryDB 中的策略操作在操作前使用以下前缀:

MemoryDB

要在单个语句中指定多项操作,请使用逗号将它们隔开。

"Action": [ "MemoryDB:action1", "MemoryDB:action2" ]

您也可以使用通配符(*)指定多个操作。例如,要指定以单词 Describe 开头的所有操作,包括以下操作:

"Action": "MemoryDB:Describe*"

要查看 MemoryDB 基于身份的策略的示例,请参阅 Identity-based MemoryDB 的策略示例

适用于 MemoryDB 的策略资源

支持策略资源:

管理员可以使用 AWS JSON 策略来指定谁有权访问哪些内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Resource JSON 策略元素指定要向其应用操作的一个或多个对象。作为最佳实践,请使用其 Amazon 资源名称(ARN)指定资源。对于不支持资源级权限的操作,请使用通配符 (*) 指示语句应用于所有资源。

"Resource": "*"

要查看 MemoryDB 的资源类型及其 ARN 的列表,请参阅《服务授权参考》中的 MemoryDB 定义的资源。要了解您可以在哪些操作中指定每个资源的 ARN,请参阅 MemoryDB 定义的操作

要查看 MemoryDB 基于身份的策略的示例,请参阅 Identity-based MemoryDB 的策略示例

MemoryDB 的策略条件键

支持特定于服务的策略条件键:

管理员可以使用 AWS JSON 策略来指定谁有权访问哪些内容。也就是说,哪个主体可以对什么资源执行操作,以及在什么条件下执行。

Condition 元素根据定义的条件指定语句何时执行。您可以创建使用条件运算符(例如,等于或小于)的条件表达式,以使策略中的条件与请求中的值相匹配。要查看所有 AWS 全局条件密钥,请参阅 IAM 用户指南中的AWS 全局条件上下文密钥

要查看 MemoryDB 基于身份的策略的示例,请参阅 Identity-based MemoryDB 的策略示例

使用条件键

您可以指定决定 IAM 策略如何生效的条件。在 MemoryDB 中,您可以使用 JSON 策略的 Condition 元素将请求上下文中的键与您在策略中指定的键值进行比较。有关更多信息,请参阅 IAM JSON 策略元素:条件

有关 MemoryDB 条件键的列表,请参阅《服务授权参考》中的 MemoryDB 的条件键

有关全局条件键的列表,请参阅 AWS 全局条件上下文键

指定条件:使用条件键

要实现精细控制,可以编写 IAM 权限策略,用于指定控制某些请求上的单独参数集的条件。然后,可以将该策略应用于您使用 IAM 控制台创建的 IAM 用户、组或角色。

要应用条件,请将条件信息添加到 IAM 策略语句。例如,要禁止创建任何禁用了 TLS 的 MemoryDB 集群,可以在策略声明中指定以下条件。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "memorydb:CreateCluster" ], "Resource": [ "*" ], "Condition": { "Bool": { "memorydb:TLSEnabled": "false" } } } ] }

有关标记的更多信息,请参阅标记 MemoryDB 资源

有关使用策略条件运算符的更多信息,请参阅 MemoryDB API 权限:操作、资源和条件参考

策略示例:使用条件进行 Fine-Grained 参数控制

此部分介绍对之前列出的 MemoryDB 参数实现精细访问控制的示例策略。

  1. memorydb:TLSEnabled:指定仅在启用 TLS 的情况下创建集群。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "memorydb:CreateCluster" ], "Resource": [ "arn:aws:memorydb:*:*:parametergroup/*", "arn:aws:memorydb:*:*:subnetgroup/*", "arn:aws:memorydb:*:*:acl/*" ] }, { "Effect": "Allow", "Action": [ "memorydb:CreateCluster" ], "Resource": [ "*" ], "Condition": { "Bool": { "memorydb:TLSEnabled": "true" } } } ] }
  2. memorydbUserAuthenticationMode:: — 指定可以使用特定类型的身份验证模式(例如 IAM)创建用户。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "memorydb:Createuser" ], "Resource": [ "arn:aws:memorydb:*:*:user/*" ], "Condition": { "StringEquals": { "memorydb:UserAuthenticationMode": "iam" } } } ] }

    如果您设置基于 “拒绝” 的策略,建议使用话务StringEqualsIgnoreCase员避免使用特定用户身份验证模式类型的所有呼叫,无论情况如何。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "memorydb:CreateUser" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "memorydb:UserAuthenticationMode": "password" } } } ] }

MemoryDB 中的访问控制列表(ACL)

支持 ACL:

访问控制列表(ACL)控制哪些主体(账户成员、用户或角色)有权访问资源。ACL 与基于资源的策略类似,但它们不使用 JSON 策略文档格式。

Attribute-based 使用 MemoryDB 进行访问控制 (ABAC)

支持 ABAC(策略中的标签):

Attribute-based 访问控制 (ABAC) 是一种授权策略,它根据称为标签的属性定义权限。您可以将标签附加到 IAM 实体和 AWS 资源,然后设计 ABAC 策略,允许在委托人的标签与资源上的标签匹配时进行操作。

要基于标签控制访问,您需要使用 aws:ResourceTag/key-nameaws:RequestTag/key-nameaws:TagKeys 条件键在策略的条件元素中提供标签信息。

如果某个服务对于每种资源类型都支持所有这三个条件键,则对于该服务,该值为。如果某个服务仅对于部分资源类型支持所有这三个条件键,则该值为部分

有关 ABAC 的更多信息,请参阅《IAM 用户指南》中的使用 ABAC 授权定义权限。要查看设置 ABAC 步骤的教程,请参阅《IAM 用户指南》中的使用基于属性的访问权限控制(ABAC)

将临时凭证用于 MemoryDB

支持临时凭证:

临时证书提供对 AWS 资源的短期访问权限,并在您使用联合或切换角色时自动创建。 AWS 建议您动态生成临时证书,而不是使用长期访问密钥。有关更多信息,请参阅《IAM 用户指南》中的 IAM 中的临时安全凭证使用 IAM 的。AWS 服务

Cross-service MemoryDB 的主要权限

支持转发访问会话(FAS):

前向访问会话 (FAS) 使用主体调用的权限 AWS 服务,以及 AWS 服务 向下游服务发出请求的请求。有关发出 FAS 请求时的策略详情,请参阅转发访问会话

MemoryDB 的服务角色

支持服务角色:

服务角色是由一项服务担任、代表您执行操作的 IAM 角色。IAM 管理员可以在 IAM 中创建、修改和删除服务角色。有关更多信息,请参阅《IAM 用户指南》中的创建向 AWS 服务委派权限的角色

警告

更改服务角色的权限可能会破坏 MemoryDB 的功能。仅当 MemoryDB 提供相关指导时才编辑服务角色。

Service-linked MemoryDB 的角色

支持服务关联角色:

服务相关角色是一种链接到的服务角色。 AWS 服务该服务可以代入代表您执行操作的角色。 Service-linked 角色显示在您的中 AWS 账户 且归服务所有。IAM 管理员可以查看但不能编辑服务关联角色的权限。

有关创建或管理服务相关角色的详细信息,请参阅能够与 IAM 搭配使用的AWS 服务。在表中查找Service-linked 角色Yes中包含的服务。选择链接以查看该服务的服务相关角色文档。