为 MemoryDB 使用服务相关角色 - Amazon MemoryDB

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

为 MemoryDB 使用服务相关角色

MemoryDB 使用 AWS Identity and Access Management (IAM) 与服务相关的角色。服务相关角色是一种独特的IAM角色类型,直接链接到 AWS 服务,例如 MemoryDB。MemoryDB 服务相关角色由 MemoryDB 预定义。它们包含该服务代表您的集群调用 AWS 服务所需的一切权限。

服务相关角色使设置 MemoryDB 变得更加容易,因为您不必手动添加必要的权限。这些角色已存在于您的 AWS 账户中,但已关联到 MemoryDB 用例并具有预定义的权限。只有 MemoryDB 可以担任这些角色,并且只有这些角色才能使用预定义的权限策略。只有先删除角色的相关资源,才能删除角色。这样可以保护您的 MemoryDB 资源,因为您不能无意中删除访问资源的必要权限。

有关支持服务相关角色的其他服务的信息,请参阅与之配合使用的AWS 服务,IAM并在 “服务相关角色” 列中查找标有 “” 的服务。选择和链接,查看该服务的服务相关角色文档。

MemoryDB 的服务相关角色权限

MemoryDB 使用名为的服务相关角色 AWSServiceRoleForMemoryDB— 此策略允许 MemoryDB 在必要时代表您管理 AWS 资源以管理集群。

AWSServiceRoleForMemoryDB 服务相关角色权限策略允许 MemoryDB 对指定资源完成以下操作:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "AmazonMemoryDBManaged" ] } } }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:ResourceTag/AmazonMemoryDBManaged": "true" } } }, { "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": "*" }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": "AWS/MemoryDB" } } } ] }

有关更多信息,请参阅 AWS 托管策略:M emoryDBService RolePolicy

允许IAM实体创建 AWSServiceRoleForMemoryDB 服务相关角色

将以下策略声明添加到该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实体删除 AWSServiceRoleForMemoryDB 服务相关角色

将以下策略声明添加到该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控制台创建服务相关角色。

创建服务相关角色(控制台)
  1. 登录 AWS Management Console 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/

  2. 在IAM控制台的左侧导航窗格中,选择角色。然后选择创建新角色

  3. Select type of trusted entity(选择受信任实体的类型)下,选择 AWS Service(亚马逊云科技服务)

  4. 或选择一个服务以查看其用例中,选择 MemoryDB

  5. 选择下一步: 权限

  6. 策略名称下,请注意此角色需要 MemoryDBServiceRolePolicy。选择 Next:Tags(下一步: 标签)

  7. 请注意,服务相关角色不支持标签。选择下一步: 审核

  8. (可选)对于 Role description,编辑新服务相关角色的描述。

  9. 检查角色,然后选择创建角色

创建服务相关角色 () IAM CLI

您可以使用中的IAM操作 AWS Command Line Interface 来创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。

创建服务相关角色 () CLI

使用以下操作:

$ aws iam create-service-linked-role --aws-service-name memorydb.amazonaws.com

创建服务相关角色 () IAM API

您可以使用IAMAPI来创建服务相关角色。此角色可以包括服务代入角色时所需的信任策略和内联策略。

创建服务相关角色 () API

使用 CreateServiceLinkedRole API打电话。在请求中,指定 memorydb.amazonaws.com 的服务名称。

编辑 MemoryDB 服务相关角色的描述

MemoryDB 不允许您编辑 AWSServiceRoleForMemoryDB 服务相关角色。创建服务相关角色后,将无法更改角色名称,因为可能有多个实体引用该角色。但是,您可以使用编辑角色的描述IAM。

编辑服务相关角色描述(IAM控制台)

您可以使用IAM控制台编辑与服务相关的角色描述。

编辑服务相关角色的描述(控制台)
  1. 在IAM控制台的左侧导航窗格中,选择角色

  2. 以下代码示例显示如何将 IAM 策略附加到用户。

  3. Role description 的最右侧,选择 Edit

  4. 在框中输入新描述,然后选择 Save(保存)

编辑服务相关角色描述 () IAM CLI

您可以使用中的IAM操作 AWS Command Line Interface 来编辑与服务相关的角色描述。

更改服务相关角色的描述 () CLI
  1. (可选)要查看角色的当前描述,请使用 f AWS CLI or IAM 操作get-role

    $ aws iam get-role --role-name AWSServiceRoleForMemoryDB

    使用角色名称(而不是ARN)来指代CLI操作中的角色。例如,如果角色具有以下内容ARN:arn:aws:iam::123456789012:role/myrole,则将该角色称为myrole

  2. 要更新服务相关角色的描述,请使用 fo AWS CLI r IAM 操作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

您可以使用IAMAPI来编辑与服务相关的角色描述。

更改服务相关角色的描述 () API
  1. (可选)要查看角色的当前描述,请使用IAMAPI操作 GetRole.

    https://iam.amazonaws.com/ ?Action=GetRole &RoleName=AWSServiceRoleForMemoryDB &Version=2010-05-08 &AUTHPARAMS
  2. 要更新角色的描述,请使用IAMAPI操作 UpdateRoleDescription.

    https://iam.amazonaws.com/ ?Action=UpdateRoleDescription &RoleName=AWSServiceRoleForMemoryDB &Version=2010-05-08 &Description="New description"

删除 MemoryDB 的服务相关角色

如果不再需要使用某个需要服务相关角色的功能或服务,我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是,您必须先清除您的服务相关角色,然后才能将其删除。

MemoryDB 不会为您删除服务相关角色。

清除服务相关角色

在使用IAM删除服务相关角色之前,请先确认该角色没有与之关联的资源(集群)。

在控制台中检查服务相关角色是否有活动会IAM话
  1. 登录 AWS Management Console 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/

  2. 在IAM控制台的左侧导航窗格中,选择角色。然后选择 AWSServiceRoleForMemoryDB 角色的名称(不是复选框)。

  3. 在所选角色的 Summary 页面上,选择 Access Advisor 选项卡。

  4. 访问顾问选项卡查看服务相关角色的近期活动。

删除需要的 MemoryDB 资源 AWSServiceRoleForMemoryDB (控制台)

删除服务相关角色(IAM控制台)

您可以使用IAM控制台删除服务相关角色。

删除服务相关角色 (控制台)
  1. 登录 AWS Management Console 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/

  2. 在IAM控制台的左侧导航窗格中,选择角色。然后,选中要删除的角色名称旁边的复选框,而不是名称或行本身。

  3. 对于页面顶部的角色操作,请选择删除角色

  4. 在确认页面中,查看上次访问服务的数据,该数据显示了每个选定角色上次访问 AWS 服务的时间。这样可帮助您确认角色当前是否处于活动状态。如果要继续,请选择 Yes, Delete 以提交服务相关角色进行删除。

  5. 观看IAM控制台通知,监控服务相关角色删除的进度。由于IAM服务相关角色的删除是异步的,因此在您提交要删除的角色之后,删除任务可能会成功或失败。如果任务失败,您可以从通知中选择 View detailsView Resources 以了解删除失败的原因。

删除服务相关角色 () IAM CLI

您可以使用中的IAM操作 AWS Command Line Interface 来删除服务相关角色。

删除服务相关角色 () CLI
  1. 如果您不知道要删除的服务相关角色的名称,请输入以下命令。此命令列出了您账户中的角色及其 Amazon 资源名称 (ARNs)。

    $ aws iam get-role --role-name role-name

    使用角色名称(而不是ARN)来指代CLI操作中的角色。例如,如果某个角色具有 ARNarn:aws:iam::123456789012:role/myrole,则将该角色称为myrole

  2. 如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。您必须从响应中捕获 deletion-task-id 以检查删除任务的状态。输入以下命令以提交服务相关角色的删除请求。

    $ aws iam delete-service-linked-role --role-name role-name
  3. 输入以下命令以检查删除任务的状态。

    $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id

    删除任务的状态可能是 NOT_STARTEDIN_PROGRESSSUCCEEDEDFAILED。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。

删除服务相关角色 () IAM API

您可以使用删除服务相关角色。IAM API

删除服务相关角色 () API
  1. 要提交与服务相关的名册的删除请求,请致电 DeleteServiceLinkedRole。 在请求中,指定角色名称。

    如果服务相关角色正被使用或具有关联的资源,则无法删除它,因此您必须提交删除请求。如果不满足这些条件,该请求可能会被拒绝。您必须从响应中捕获 DeletionTaskId 以检查删除任务的状态。

  2. 要查看删除状态,请致电 GetServiceLinkedRoleDeletionStatus。 在请求中,指定DeletionTaskId

    删除任务的状态可能是 NOT_STARTEDIN_PROGRESSSUCCEEDEDFAILED。如果删除失败,则调用会返回失败的原因,以便您进行问题排查。