本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
MemoryDB 使用 AWS Identity and Access Management (IAM) 服务相关角色。服务相关角色是一种独特的 IAM 角色,直接链接到 AWS 服务,例如 MemoryDB。MemoryDB 服务相关角色由 MemoryDB 预定义。它们包含该服务代表您的集群调用 AWS 服务所需的一切权限。
使用服务相关角色时,您不必手动添加必要的权限,所以您可以更轻松地设置 MemoryDB。这些角色已存在于您的 AWS 账户中,但已关联到 MemoryDB 用例并具有预定义的权限。只有 MemoryDB 可以代入这些角色,并且只有这些角色可以使用预定义的权限策略。只有先删除角色的相关资源,才能删除角色。这将保护您的 MemoryDB 资源,因为您不会无意中删除访问资源的必要权限。
有关支持服务相关角色的其他服务的信息,请参阅使用 IAM 的AWS 服务并查找服务相关角色列中显示为是的服务。选择是和链接,查看该服务的服务相关角色文档。
目录
MemoryDB 的服务相关角色权限
MemoryDB 使用名为 AWSServiceRoleForMemoryDB 的服务相关角色 — 此策略允许 MemoryDB 在必要时代表您管理管理集群的 AWS 资源。
AWSServiceRoleForMemory数据库服务相关角色权限策略允许 MemoryDB 对指定资源完成以下操作:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CreateMemoryDBTagsOnNetworkInterfaces",
"Effect": "Allow",
"Action": [
"ec2:CreateTags"
],
"Resource": "arn:aws:ec2:*:*:network-interface/*",
"Condition": {
"StringEquals": {
"ec2:CreateAction": "CreateNetworkInterface"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"AmazonMemoryDBManaged"
]
}
}
},
{
"Sid": "CreateNetworkInterfaces",
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface"
],
"Resource": [
"arn:aws:ec2:*:*:network-interface/*",
"arn:aws:ec2:*:*:subnet/*",
"arn:aws:ec2:*:*:security-group/*"
]
},
{
"Sid": "DeleteMemoryDBTaggedNetworkInterfaces",
"Effect": "Allow",
"Action": [
"ec2:DeleteNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute"
],
"Resource": "arn:aws:ec2:*:*:network-interface/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/AmazonMemoryDBManaged": "true"
}
}
},
{
"Sid": "DeleteNetworkInterfaces",
"Effect": "Allow",
"Action": [
"ec2:DeleteNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute"
],
"Resource": "arn:aws:ec2:*:*:security-group/*"
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeSecurityGroups",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs"
],
"Resource": "*"
},
{
"Sid": "PutCloudWatchMetricData",
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "AWS/MemoryDB"
}
}
},
{
"Sid": "ReplicateMemoryDBMultiRegionClusterData",
"Effect": "Allow",
"Action": [
"memorydb:ReplicateMultiRegionClusterData"
],
"Resource": "arn:aws:memorydb:*:*:cluster/*"
}
]
}
有关更多信息,请参阅 AWS 托管策略:内存 DBService RolePolicy。
允许 IAM 实体创建 AWSServiceRoleForMemory数据库服务相关角色
向该 IAM 实体的权限中添加以下策略声明:
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole",
"iam:PutRolePolicy"
],
"Resource": "arn:aws:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB*",
"Condition": {"StringLike": {"iam:AWS ServiceName": "memorydb.amazonaws.com"}}
}
允许 IAM 实体删除 AWSServiceRoleForMemory数据库服务相关角色
向该 IAM 实体的权限中添加以下策略声明:
{
"Effect": "Allow",
"Action": [
"iam:DeleteServiceLinkedRole",
"iam:GetServiceLinkedRoleDeletionStatus"
],
"Resource": "arn:aws:iam::*:role/aws-service-role/memorydb.amazonaws.com/AWSServiceRoleForMemoryDB*",
"Condition": {"StringLike": {"iam:AWS ServiceName": "memorydb.amazonaws.com"}}
}
或者,您可以使用 AWS 托管策略来提供对 MemoryDB 的完全访问权限。
创建服务相关角色(IAM)
您可以使用 IAM 控制台、CLI 或 API 创建服务相关角色。
创建服务相关角色(IAM 控制台)
您可使用 IAM 控制台创建服务相关角色。
创建服务相关角色(控制台)
登录 AWS Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在 IAM 控制台的左侧导航窗格中,选择 Roles。然后选择创建新角色。
-
在 Select type of trusted entity(选择受信任实体的类型)下,选择 AWS Service(亚马逊云科技服务)。
-
在或选择一个服务以查看其用例中,选择 MemoryDB。
选择下一步: 权限。
在 策略名称下,请注意此角色需要
MemoryDBServiceRolePolicy
。选择 Next:Tags(下一步: 标签)。请注意,服务相关角色不支持标签。选择下一步: 审核。
-
(可选)对于 Role description,编辑新服务相关角色的描述。
-
检查角色,然后选择创建角色。
创建服务相关角色(IAM CLI)
您可以使用中的 IAM 操作 AWS Command Line Interface 来创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。
创建服务相关角色(CLI)
使用以下操作:
$
aws iam create-service-linked-role --aws-service-name
memorydb.amazonaws.com
创建服务相关角色(IAM API)
您可以使用 IAM API 创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。
创建服务相关角色(API)
使用 CreateServiceLinkedRole API 调用。在请求中,指定 memorydb.amazonaws.com
的服务名称。
编辑 MemoryDB 的服务相关角色的描述
MemoryDB 不允许您编辑 AWSServiceRoleForMemory数据库服务相关角色。创建服务相关角色后,您将无法更改角色的名称,因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。
编辑服务相关角色描述(IAM 控制台)
您可以使用 IAM 控制台编辑服务相关角色的描述。
编辑服务相关角色的描述(控制台)
-
在 IAM 控制台的左侧导航窗格中,选择 Roles。
-
以下代码示例显示如何将 IAM 策略附加到用户。
-
在 Role description 的最右侧,选择 Edit。
-
在框中输入新描述,然后选择 Save(保存)。
编辑服务相关角色描述(IAM CLI)
您可以使用中的 IAM 操作 AWS Command Line Interface 来编辑与服务相关的角色描述。
更改服务相关角色的描述(CLI)
-
(可选)要查看角色的当前描述,请使用 for AWS CLI IAM 操作
get-role
。$
aws iam get-role --role-name AWSServiceRoleForMemoryDB
通过 CLI 操作使用角色名称(并非 ARN)指向角色。例如,如果一个角色的 ARN 为
arn:aws:iam::123456789012:role/myrole
,则应将角色称为myrole
。 -
要更新服务相关角色的描述,请使用 for I AWS CLI AM 操作
update-role-description
。对于 Linux、macOS 或 Unix:
$
aws iam update-role-description \ --role-name AWSServiceRoleForMemoryDB \ --description "
new description
"对于 Windows:
$
aws iam update-role-description ^ --role-name AWSServiceRoleForMemoryDB ^ --description "
new description
"
编辑服务相关角色描述(IAM API)
您可以使用 IAM API 编辑服务相关角色描述。
更改服务相关角色的描述(API)
-
(可选)要查看角色的当前描述,请使用 IAM API 操作 GetRole.
https://iam.amazonaws.com/ ?Action=GetRole &RoleName=
AWSServiceRoleForMemoryDB
&Version=2010-05-08 &AUTHPARAMS -
要更新角色的描述,请使用 IAM API 操作 UpdateRoleDescription.
https://iam.amazonaws.com/ ?Action=UpdateRoleDescription &RoleName=
AWSServiceRoleForMemoryDB
&Version=2010-05-08 &Description="New description
"
删除 MemoryDB 的服务相关角色
如果不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是,您必须先清除您的服务相关角色,然后才能将其删除。
MemoryDB 不会删除您的服务相关角色。
清除服务相关角色
您必须先确认该角色没有与之关联的资源(集群),然后才能使用 IAM 删除服务相关角色。
在 IAM 控制台中检查服务相关角色是否具有活动会话
登录 AWS Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在 IAM 控制台的左侧导航窗格中,选择 Roles。然后选择 AWSServiceRoleForMemory数据库角色的名称(不是复选框)。
-
在所选角色的 Summary 页面上,选择 Access Advisor 选项卡。
-
在访问顾问选项卡查看服务相关角色的近期活动。
删除需要数据库的 MemoryDB 资源( AWSServiceRoleForMemory控制台)
-
要删除集群,请参阅以下内容:
删除服务相关角色(IAM 控制台)
您可以使用 IAM 控制台删除服务相关角色。
删除服务相关角色 (控制台)
登录 AWS Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在 IAM 控制台的左侧导航窗格中,选择 Roles。然后,选中要删除的角色名称旁边的复选框,而不是名称或行本身。
-
对于页面顶部的角色操作,请选择删除角色。
-
在确认页面中,查看上次访问服务的数据,该数据显示了每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续,请选择 Yes, Delete 以提交服务相关角色进行删除。
-
监视 IAM 控制台通知,以监控服务相关角色的删除进度。由于 IAM 服务相关角色删除是异步的,因此,在您提交角色进行删除后,删除任务可能成功,也可能失败。如果任务失败,您可以从通知中选择 View details 或 View Resources 以了解删除失败的原因。
删除服务相关角色(IAM CLI)
您可以使用中的 IAM 操作 AWS Command Line Interface 来删除服务相关角色。
删除服务相关角色(CLI)
-
如果您不知道要删除的服务相关角色的名称,请输入以下命令。此命令列出了您账户中的角色及其 Amazon 资源名称 (ARNs)。
$
aws iam get-role --role-name
role-name
通过 CLI 操作使用角色名称(并非 ARN)指向角色。例如,如果某个角色具有 ARN
arn:aws:iam::123456789012:role/myrole
,则将该角色称为myrole
。 -
如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。您必须从响应中捕获
deletion-task-id
以检查删除任务的状态。输入以下命令以提交服务相关角色的删除请求。$
aws iam delete-service-linked-role --role-name
role-name
-
输入以下命令以检查删除任务的状态。
$
aws iam get-service-linked-role-deletion-status --deletion-task-id
deletion-task-id
删除任务的状态可能是
NOT_STARTED
、IN_PROGRESS
、SUCCEEDED
或FAILED
。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。
删除服务相关角色(IAM API)
您可以使用 IAM API 删除服务相关角色。
删除服务相关角色(API)
-
要提交与服务相关的名册的删除请求,请致电 DeleteServiceLinkedRole。 在请求中,指定角色名称。
如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。您必须从响应中捕获
DeletionTaskId
以检查删除任务的状态。 -
要查看删除状态,请致电 GetServiceLinkedRoleDeletionStatus。 在请求中,指定
DeletionTaskId
。删除任务的状态可能是
NOT_STARTED
、IN_PROGRESS
、SUCCEEDED
或FAILED
。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。