Amazon X-Ray 如何与 IAM 协同工作 - Amazon X-Ray
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Amazon X-Ray 如何与 IAM 协同工作

在使用 IAM 管理对 X-Ray 的访问权限之前,您应该了解可以将哪些 IAM 功能用于 X 光。要获得 X-Ray 和其他Amazon服务与 IAM 配合使用,请参阅Amazon使用 IAM 的服务中的IAM 用户指南

您可以使用Amazon Identity and Access Management(IAM) 将 X-Ray 权限授予您账户下的用户和计算资源。IAM 在 API 层面控制对 X-Ray 服务的访问,以统一实施权限,无论是什么客户端 (控制台、Amazon开发工具包,Amazon CLI) 您的用户使用。

目的使用 X-Ray 控制台查看服务地图和分段,只需具有读取权限即可。要启用控制台访问,请向您的 IAM 用户添加 AWSXrayReadOnlyAccess 托管策略

适用于本地开发和测试中,创建一个具有读取和写入权限的 IAM 用户。为用户生成访问密钥并将其存储在标准的Amazon开发工具包位置。您可以将这些凭证用于 X-Ray 守护程序、Amazon CLI,以及Amazon开发工具包。

将已分析应用程序部署到 Amazon,请创建一个具有写入权限的 IAM 角色,并将它分配给运行您的应用程序的资源。AWSXRayDaemonWriteAccess 包含上传跟踪的权限、一些读取权限以及支持使用采样规则的权限。

读取和写入策略不包括配置加密钥和抽样规则. 使用AWSXrayFullAccess访问这些设置,或添加配置 API在自定义策略中。要使用您创建的客户托管密钥进行加密和解密,您还需要使用该密钥的权限

基于 X-Ray 身份的策略

通过使用 IAM 基于身份的策略,您可以指定允许或拒绝的操作和资源以及允许或拒绝操作的条件。X-Ray 支持特定的操作、资源和条件键。要了解在 JSON 策略中使用的所有元素,请参阅IAM JSON 策略元素参考中的IAM 用户指南

Actions

管理员可以使用 Amazon JSON 策略来指定谁有权访问什么内容。也就是说,这委托人可以执行操作上的什么resources,并根据什么条件

JSON 策略的 Action 元素描述可用于在策略中允许或拒绝访问的操作。策略操作通常与关联的 Amazon API 操作同名。有一些例外情况,例如没有匹配 API 操作的仅限权限 操作。还有一些操作要求在策略中执行多个操作。这些附加操作称为相关操作

在策略中包含操作以授予执行相关操作的权限。

X-Ray 中的策略操作在操作前使用以下前缀:xray:。 例如,要授予某人使用 X-Ray 检索组资源详细信息的权限GetGroupAPI 操作时,您可以包含xray:GetGroup行动在他们的政策。策略语句必须包含 ActionNotAction 元素。X-Ray 定义了一组自己的操作,以描述您可以使用该服务执行的任务。

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

"Action": [ "xray:action1", "xray:action2"

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

"Action": "xray:Get*"

要查看 X-Ray 操作的列表,请参阅定义的操作Amazon X-Ray中的IAM 用户指南

Resources

管理员可以使用 Amazon JSON 策略来指定谁有权访问什么内容。也就是说,这委托人可以执行操作上的什么resources,并根据什么条件

Resource JSON 策略元素指定要向其应用操作的一个或多个对象。语句必须包含 ResourceNotResource 元素。作为最佳实践,请使用其 Amazon 资源名称 (ARN)指定资源。对于支持特定资源类型(称为资源级权限)的操作,您可以执行此操作。

对于不支持资源级权限的操作(如列出操作),请使用通配符 (*) 指示语句应用于所有资源。

"Resource": "*"

您可以使用 IAM 策略控制对资源的访问。对于支持资源级权限的操作,您可以使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。

可以在 IAM 策略中使用所有 X-Ray 操作以授予或拒绝用户对该操作的使用权限。然而,并非所有X-Ray 动作支持资源级权限,这使您能够指定可对其执行操作的资源。

对于不支持资源级权限的操作,您必须将“*”作为资源。

以下 X-Ray 操作支持资源级权限:

  • CreateGroup

  • GetGroup

  • UpdateGroup

  • DeleteGroup

  • CreateSamplingRule

  • UpdateSamplingRule

  • DeleteSamplingRule

下面是基于身份的权限策略的示例。CreateGroupaction. 此示例显示了与组名相关的 ARN 的使用情况local-users使用唯一 ID 作为通配符。创建组时会生成唯一 ID,因此无法事先在策略中预测。使用GetGroupUpdateGroup,或者DeleteGroup,您可以将其定义为通配符或精确的 ARN(包括 ID)。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:CreateGroup" ], "Resource": [ "arn:aws:xray:eu-west-1:123456789012:group/local-users/*" ] } ] }

下面是基于身份的权限策略的示例。CreateSamplingRuleaction.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:CreateSamplingRule" ], "Resource": [ "arn:aws:xray:eu-west-1:123456789012:sampling-rule/base-scorekeep" ] } ] }
注意

采样规则的 ARN 由其名称定义。与组 ARN 不同,采样规则没有唯一生成的 ID。

要查看 X-Ray 资源类型及其 ARN 的列表,请参阅。定义的资源Amazon X-Ray中的IAM 用户指南。要了解您可以在哪些操作中指定每个资源的 ARN,请参阅 Amazon X-Ray 定义的操作

条件键

X-Ray 不提供任何特定于服务的条件键,但它支持使用某些全局条件键。要查看所有Amazon全局条件键,请参阅Amazon全局条件上下文键中的IAM 用户指南

Examples

要查看 X-Ray 基于身份的策略示例,请参阅。Amazon X-Ray 基于身份的策略示例

X-Ray 资源策略

X-Ray 不支持基于资源的策略,但它支持资源级策略。

基于 X-Ray 标签的授权

您可以将标签附加到 X-Ray 组或采样规则,或将请求中的标签传递给 X-Ray。要基于标签控制访问,您需要使用 xray:ResourceTag/key-nameaws:RequestTag/key-nameaws:TagKeys 条件键在策略的条件元素中提供标签信息。有关标记 X-Ray 资源的更多信息,请参阅。标签 X-Ray 采样规则和组

要查看基于身份的策略(用于基于资源上的标签来限制对该资源的访问)的示例,请参阅管理基于标签的 X-Ray 组和采样规则的访问

在本地运行应用程序

您的已分析应用程序将跟踪数据发送到 X-Ray 守护程序。守护程序缓存分段文档,并分批将它们上传到 X-Ray 服务。守护程序需要写入权限以将跟踪数据和遥测数据上传到 X-Ray 服务。

当您本地运行守护程序时,应将您的 IAM 用户的访问密钥和私有密钥存储在名为 credentials 的文件中,该文件位于您的用户文件夹内名为 .aws 的文件夹中。

例 ~/.aws/credentials

[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

如果您已经配置凭证以用于Amazon开发工具包或Amazon CLI,守护进程可以使用这些。如果有多个配置文件可用,则该守护程序使用默认配置文件。

在中运行应用程序Amazon

当你运行你的应用程序Amazon中,可使用角色向运行守护程序的 Amazon EC2 实例或 Lambda 函数授予权限。

  • Amazon Elastic Compute Cloud (Amazon EC2)— 创建一个 IAM 角色并将其作为一个实例配置文件

  • Amazon Elastic Container Service (Amazon ECS)— 创建一个 IAM 角色并将其作为容器实例 IAM 角色

  • Amazon Elastic Beanstalk(Elastic Beanstalk)— Elastic Beanstalk 在其默认实例配置文件。您可以使用该默认实例配置文件,或在自定义实例配置文件中添加写入权限。

  • Amazon Lambda(Lambda)— 为您函数的执行角色添加写入权限。

创建用于 X-Ray 的角色

  1. 打开 IAM 控制台

  2. 选择 Roles (角色)

  3. 选择 Create New Role

  4. 对于角色名称,键入 xray-application。选择 Next Step

  5. 对于 Role Type,选择 Amazon EC2

  6. 附加托管策略以向您应用程序授予对 Amazon 服务的访问权限。

    • AWSXRayDaemonWriteAccess— 授予 X-Ray 守护程序权限以上传跟踪数据。

    • AmazonS3ReadOnlyAccess(仅限 Amazon EC2)— 授予实例权限以从 Amazon S3 下载 X-Ray 守护程序。

    如果应用程序使用 Amazon 开发工具包访问其他服务,请添加向这些服务授予访问权限的策略。

  7. 选择 Next Step

  8. 选择 Create Role (创建角色)

加密用户权限

默认情况下,X-Ray 将加密所有跟踪数据,您可以将其配置为使用您管理的密钥。如果选择Amazon Key Management Service客户托管客户主密钥 (CMK),您需要确保该密钥的访问策略允许您为 X-Ray 授予使用该密钥进行加密的权限。您账户中的其他用户还需要访问该密钥来查看在 X-Ray 控制台中加密的跟踪数据。

对于客户托管 CMK,请使用允许以下操作的访问策略配置您的密钥:

  • 在 X-Ray 中配置密钥的用户有权调用kms:CreateGrantkms:DescribeKey

  • 可以访问加密跟踪数据的用户有权调用kms:Decrypt

将用户添加到关键用户组,则他们具有执行这两项操作的权限。仅需要针对密钥策略设置权限,因此您不需要任何Amazon KMS权限的权限。有关更多信息,请参阅 。使用中的密钥策略Amazon KMS开发人员指南

对于默认加密,或者如果选择Amazon托管 CMK (aws/xray),权限基于有权访问 X-Ray API 的用户。包含在 AWSXrayFullAccess 中的具有对 PutEncryptionConfig 的访问权限的任何人都可以更改加密配置。要防止用户更改加密密钥,请勿向这些用户授予使用 PutEncryptionConfig 的权限。