Amazon Neptune 中基于标签的访问控制 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon Neptune 中基于标签的访问控制

Amazon Neptune 支持在 IAM 策略中使用自定义标签指定条件,以通过Neptune 管理 API.

例如,如果添加名为environment转换到数据库实例,其中包含以下值:betastaging, 和production之后,您可创建一个策略来根据标签的值来限制对实例的访问。

重要

基于标签的访问控制仅适用于Neptune 支持的 IAM 资源,使用 Neptune 管理 API 访问。它不适用于访问包含neptune-db:通过数据平面操作。

如果您使用标签管理对 Neptune 资源的访问,请确保保护对标签的访问。您可以通过为AddTagsToResourceRemoveTagsFromResource行动。

例如,您可以使用以下策略拒绝用户为所有资源添加或删除标签。之后,您可创建策略以允许特定用户添加或删除标签。

{ "Version": "2012-10-17", "Statement":[ { "Sid": "DenyTagUpdates", "Effect": "Deny", "Action": [ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"*" } ] }

标签可以附加到 Neptune 资源(如数据库实例),或者可以在请求中传递标签。您将ConditionIAM 策略的元素,用于控制对这些标签附加到的资源的访问权限(请参阅Condition中的IAM 用户指南),还有条件运算符策略变量的标签.

注意

此类自定义标签标识符、名称和值区分大小写。

Neptune 中 IAM 自定义标签条件的语法

自定义标签条件的语法如下:

"Condition": {"StringEquals": {"rds:tag-identifier/tag-name": ["tag-value"] } }

例如,以下内容:Condition元素适用于具有名为的标签的数据库实例environment和标签值production

"Condition": {"StringEquals": {"rds:db-tag/environment": ["production"] } }

Amazon Neptune 中基于标签的访问控制的条件键

Neptune 支持许多用于基于标签的访问控制(但不用于数据平面查询)的特殊 IAM 条件上下文密钥。下表列出所有可用于基于标签的访问控制的条件键:

基于 Neptune 标签的访问控制条件键
条件键 描述 类型
aws:RequestTag/tag-key (全局键) 根据在请求中是否具有标签键值对以筛选操作。 String
aws:ResourceTag/tag-key (全局键) 根据附加到资源的标签键值对筛选操作。 String
aws:TagKeys (全局键) 根据在请求中是否具有标签键以筛选操作。这是一个多值键。 ArrayOfString
rds:DatabaseClass 数据库实例类的类型。 String
rds:DatabaseEngine 数据库引擎,即neptune. String
rds:StorageEncrypted 一个值,该值指定是否应对数据库实例存储进行加密。要执行存储加密,请指定 true。 Boolean
rds:cluster-tag/tag-key 附加到数据库集群的标签。 String
rds:cluster-snapshot-tag/tag-key 附加到数据库集群快照的标签。 String
rds:db-tag/tag-key 附加到数据库实例的标签。 String
rds:es-tag/tag-key 附加到事件订阅的标签。 String
rds:pg-tag/tag-key 附加到数据库参数组的标签。 String
rds:subgrp-tag/tag-key 附加到数据库子网组的标签。 String
注意

由于 Neptune 与 Amazon RDS 共享一些功能,因此 Neptune 策略中的某些操作和条件密钥使用rds:设计为前缀。

下表列出了您可在Condition基于 Neptune 标签的访问控制元素:

RDS 标签标识符 适用对象
cluster-tag 数据库集群
cluster-pg-tag 数据库集群参数组
cluster-snapshot-tag 数据库集群快照
db-tag 数据库实例,包括只读副本
es-tag 事件订阅
pg-tag 数据库参数组
snapshot-tag 数据库快照
subgrp-tag 数据库子网组

查看全球的列表AmazonNeptune 支持的条件键,请参阅Amazon Neptune 支持的 IAM 条件上下文键.

示例 1:使用可能采用多个值的自定义标签授予对资源执行操作的权限。

以下政策允许使用ModifyDBInstanceCreateDBInstance要么DeleteDBInstance在任何具有env标签设置为dev要么test

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDevTestAccess", "Effect": "Allow", "Action": [ "rds:ModifyDBInstance", "rds:CreateDBInstance", "rds:DeleteDBInstance" ], "Resource": "*", "Condition": { "StringEquals": { "rds:db-tag/env": [ "dev", "test" ], "rds:DatabaseEngine": "neptune" } } } ] }

示例 2:限制可用于对资源进行标记的一组标签键和值的值

此策略使用Conditionkey 允许具有密钥的标签env而且有价值testqa,或者dev要添加到资源中:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowTagAccessForDevResources", "Effect": "Allow", "Action": [ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource": "*", "Condition": { "StringEquals": { "rds:req-tag/env": [ "test", "qa", "dev" ], "rds:DatabaseEngine": "neptune" } } } ] }

示例 3:允许完全访问 Neptune 资源aws:ResourceTag

以下策略与上一示例类似,但是使用aws:ResourceTag相反:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFullAccessToDev", "Effect": "Allow", "Action": [ "rds:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/env": "dev", "rds:DatabaseEngine": "neptune" } } } ] }