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-db:connect通过数据平面操作。

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

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

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

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

注意

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

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

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

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

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

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

下表列出了可以在Condition元素:

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

有关 Neptune 支持的所有条件键的列表,请参阅Amazon Neptune 的条件键

示例 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:允许基于 aws:ResourceTag 对 Neptune 资源的完全访问权限

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

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

以下部分列出了可在 Neptune IAM 策略中使用的特定于服务的操作、资源和条件密钥。