如何配置 lambda 策略以将跟踪推送到 xray 以实现最低权限?

How can I configure lambda policy for pushing trace to xray to achieve Least Privilege Permissions?

我在我的应用程序中使用 AWS labmda 和 xray。以下是我的 lambda 角色的政策。我不喜欢的是 Resources 部分,即 *?如何定义一个资源来实现Least Privilege Permissions?

我已通读此文档:https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsx-ray.html。它说在资源中使用 arn:${Partition}:xray:${Region}:${Account}:group/${GroupName}/${Id}。但是我不明白 GroupNameID 我应该使用什么。

我应该将 lambda 名称作为资源的一部分吗?

        Statement:
          - Effect: Allow
            Action:
              - xray:PutTraceSegments
              - xray:PutTelemetryRecords
              - xray:GetSamplingRules
              - xray:GetSamplingTargets
              - xray:GetSamplingStatisticSummaries
            Resource: "*"
  

推荐的做法是使用名为 AWSXrayDaemonWriteAccess 的 AWS 托管策略,如 here 所述。使用托管策略的优势在于,如果守护程序将来需要其他权限,AWS 会自动添加它。另一方面,您必须自己管理策略列表。如果您愿意,您仍然可以选择自己管理它。

关于您对使用 * 的主要担忧,截至今天,X-Ray 没有资源可以管理,至少在发送段时没有。有用于管理抽样规则的资源,X-Ray 中的组用于其他用例。但是当 X-Ray SDK 需要发送数据时,它必须检索所有采样规则以决定是否发送数据。使用 PutTraceSegments 将分段发送到 AWS X-Ray 到您的 AWS 账户,而不是任何资源。因此对于这个 API 你必须使用 *。 与 GetSamplingTargets 类似,API 告诉 X-Ray 它使用了多少采样配额以及使用哪个采样规则来决定配额。它还会在接下来的几秒钟内获得一个采样目标。采样配额还与您帐户内跟踪的使用有关,而不是特定资源。

您提到的群组名称和 ID 是用于在控制台中查看您使用 CreateGroup API 或控制台创建的各种群组的数据的资源。您可以使用 GetGroups api 查看您的组,默认组始终存在。

从 lambda 发送数据时,组不会起作用。组服务图由服务根据您发送的数据计算,这些组可通过控制台查看。您可以使用 IAM 策略控制谁可以查看或修改这些组。