如何 AWS X-Ray 使用 IAM - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如何 AWS X-Ray 使用 IAM

在用於管理IAM對 X-Ray 的存取之前,您應該瞭解哪些IAM功能可用於 X-Ray。若要取得 X-Ray 和其他 AWS 服務 使用方式的高階檢視IAM,請參閱AWS 服務《IAM使用者指南》IAM中的〈使用者〉。

您可以使用 AWS Identity and Access Management (IAM) 將 X-Ray 權限授與帳戶中的使用者和計算資源。IAM控制API層級對 X-Ray 服務的存取,以統一強制執行權限,無論使用者使用哪個用戶端 (主控台 AWS SDK、 AWS CLI)。

若要使用 X-Ray 主控台檢視軌跡地圖和區段,您只需要讀取權限。若要啟用主控台存取,請將AWSXrayReadOnlyAccess受管理的原則新增至您的IAM使用者。

若要進行本機開發和測試,請建立具有讀取和寫入權限的IAM角色。假設角色並儲存角色的暫時認證。您可以將這些認證與 X-Ray 精靈搭配使用 AWS CLI、和 AWS SDK。 AWS CLI如需詳細資訊,請參閱搭配使用暫時安全登入資料。

若要將已檢測的應用程式部署到 AWS,請建立具有寫入權限的IAM角色,並將其指派給執行應用程式的資源。 AWSXRayDaemonWriteAccess包括上傳追蹤的權限,以及一些讀取權限,以及支援使用取樣規則

讀取和寫入政策不包含設定加密金鑰設定及抽樣規則的許可。用AWSXrayFullAccess於存取這些設定,或在自訂原則APIs中新增組態。針對使用您所建立客戶受管金鑰的加密和解密,您也需要使用金鑰的許可

基於 X-Ray 身份的政策

使用以IAM身分識別為基礎的策略,您可以指定允許或拒絕的動作和資源,以及允許或拒絕動作的條件。X-Ray 支援特定動作、資源和條件鍵。若要瞭解您在JSON策略中使用的所有元素,請參閱《使用IAM者指南》中的《IAMJSON策略元素參考

動作

管理員可以使用 AWS JSON策略來指定誰可以存取什麼內容。也就是說,哪個主體在什麼條件下可以對什麼資源執行哪些動作

JSON策略Action元素描述了您可以用來允許或拒絕策略中存取的動作。策略動作通常與關聯的 AWS API操作具有相同的名稱。有一些例外情況,例如沒有匹配API操作的僅限權限的操作。也有一些作業需要政策中的多個動作。這些額外的動作稱為相依動作

政策會使用動作來授予執行相關聯動作的許可。

X-Ray 中的原則動作會在動作之前使用下列前置詞:xray:例如,若要授與某人使用 X-Ray GetGroup API 作業擷取群組資源詳細資料的權限,您可以將該xray:GetGroup動作包含在他們的原則中。政策陳述式必須包含 ActionNotAction 元素。X-Ray 會定義自己的一組動作,說明您可以使用此服務執行的工作。

若要在單一陳述式中指定多個動作,請用逗號分隔,如下所示:

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

您也可以使用萬用字元 (*) 來指定多個動作。例如,若要指定開頭是 Get 文字的所有動作,請包含以下動作:

"Action": "xray:Get*"

若要查看 X-Ray 動作的清單,請參閱《IAM使用指南》 AWS X-Ray中的〈定義的動作〉

資源

管理員可以使用 AWS JSON策略來指定誰可以存取什麼內容。也就是說,哪個主體在什麼條件下可以對什麼資源執行哪些動作

ResourceJSON原則元素會指定要套用動作的一個或多個物件。陳述式必須包含 ResourceNotResource 元素。最佳做法是使用其 Amazon 資源名稱 (ARN) 指定資源。您可以針對支援特定資源類型的動作 (稱為資源層級許可) 來這麼做。

對於不支援資源層級許可的動作 (例如列出操作),請使用萬用字元 (*) 來表示陳述式適用於所有資源。

"Resource": "*"

您可以使用IAM策略來控制對資源的存取。對於支援資源層級許可的動作,您可以使用 Amazon 資源名稱 (ARN) 來識別該政策適用的資源。

所有 X-Ray 動作都可以在IAM策略中使用,授與或拒絕使用者使用該動作的權限。不過,並非所有 X-Ray 動作都支援資源層級權限,這可讓您指定可以執行動作的資源。

對於不支援資源層級許可的動作,您必須使用 "*" 做為資源。

下列 X-Ray 動作支援資源層級權限:

  • CreateGroup

  • GetGroup

  • UpdateGroup

  • DeleteGroup

  • CreateSamplingRule

  • UpdateSamplingRule

  • DeleteSamplingRule

以下是 CreateGroup 動作的身分型許可政策範例。此範例顯示使用local-users與群組名稱ARN相關的唯一 ID 作為萬用字元。群組建立時產生的唯一 ID,所以無法在政策中事先預測。使用GetGroup、或時 UpdateGroupDeleteGroup,您可以將其定義為萬用字元或完全相同ARN,包括 ID。

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

以下是 CreateSamplingRule 動作的身分型許可政策範例。

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

取樣規則的名稱定義。ARN與組不同ARNs,採樣規則沒有唯一生成的 ID。

若要查看 X-Ray 資源類型及其清單ARNs,請參閱《IAM使用指南》 AWS X-Ray中的〈定義的資源。若要瞭解您可以針對每個資源指定ARN哪些動作,請參閱定義的動作 AWS X-Ray

條件索引鍵

X-Ray 不提供任何服務特定的條件金鑰,但它確實支援使用某些全域條件金鑰。若要查看所有 AWS 全域條件索引鍵,請參閱使用指南中的AWS 全域條件內IAM容索引

範例

若要檢視 X-Ray 身分型原則的範例,請參閱。AWS X-Ray 身分型政策範例

X-Ray 資源型政策

X-Ray 支援以資源為基礎的政策,用於目前和 future 的 AWS 服務 整合,例如 Amazon SNS 主動追蹤。基於 X-Ray 資源的策略可以通過其他 AWS Management Console S 進行更新,或通過 AWS SDK或CLI。例如,Amazon SNS 主控台嘗試自動設定以資源為基礎的政策,以將追蹤傳送至 X-Ray。下列政策文件提供手動設定 X-Ray 資源型政策的範例。

範例 適用於 Amazon SNS 主動追蹤的 X-Ray 資源型政策範例

此範例政策文件指定 Amazon 將追蹤資料傳送至 X-Ray 所SNS需的許可:

{ Version: "2012-10-17", Statement: [ { Sid: "SNSAccess", Effect: Allow, Principal: { Service: "sns.amazonaws.com", }, Action: [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], Resource: "*", Condition: { StringEquals: { "aws:SourceAccount": "account-id" }, StringLike: { "aws:SourceArn": "arn:partition:sns:region:account-id:topic-name" } } } ] }

使用建立CLI以資源為基礎的政策,以SNS授與 Amazon 將追蹤資料傳送至 X-Ray 的許可:

aws xray put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "SNSAccess", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "StringLike": { "aws:SourceArn": "arn:partition:sns:region:account-id:topic-name" } } } ] }'

若要使用這些範例,請取代 分割區, region, account-id主題名 使用您的特定 AWS 分區,區域,帳戶 ID 和 Amazon SNS 主題名稱。若要授予所有 Amazon SNS 主題將追蹤資料傳送至 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角色、擔任該角色並將臨時認證儲存在環境變數中,或儲存在使用者資料夾.aws中名稱的資料夾中的檔案中。credentials AWS CLI如需詳細資訊,請參閱搭配使用暫時安全登入資料。

範例 ~/.aws/credentials
[default] aws_access_key_id={access key ID} aws_secret_access_key={access key} aws_session_token={AWS session token}

如果您已經設定了與 AWS SDK或搭配使用的認證 AWS CLI,則精靈可以使用這些認證。若有多個可用的描述檔,精靈會使用預設描述檔。

執行您的應用程式 AWS

在上執行應用程式時 AWS,請使用角色將權限授與執行精靈的 Amazon EC2 執行個體或 Lambda 函數。

建立與 X-Ray 配合使用的角色
  1. 開啟主IAM控台

  2. 選擇角色

  3. 選擇 Create New Role (建立新角色)。

  4. Role Name (角色名稱) 中,輸入 xray-application。選擇 Next Step (後續步驟)

  5. 對於「角色類型」,請選擇 Amazon EC2

  6. 附加下列受管理政策,讓您的應用程式存取權限 AWS 服務:

    • AWSXRayDaemonWriteAccess— 授予 X-Ray 守護程序上傳追蹤資料的權限。

    如果您的應用程式使 AWS SDK用存取其他服務,請新增授與這些服務存取權的原則。

  7. 選擇 Next Step (後續步驟)

  8. 選擇建立角色

用於加密的使用者許可

X-Ray 預設會加密所有追蹤資料,您可以將其設定為使用您管理的金鑰。如果您選擇 AWS Key Management Service 客戶管理的金鑰,則必須確保金鑰的存取政策允許您授與 X-Ray 的權限,以使用該金鑰進行加密。您帳戶中的其他使用者也需要存取金鑰,才能在 X-Ray 主控台中檢視加密的追蹤資料。

對於客戶管理的金鑰,請使用允許執行下列動作的存取原則來設定金鑰:

  • 在 X-Ray 中設定金鑰的使用者有權呼叫kms:CreateGrant和。kms:DescribeKey

  • 能夠存取加密追蹤資料的使用者必須具備呼叫 kms:Decrypt 的許可。

當您將使用者新增至IAM主控台的金鑰組態區段中的 [金鑰使用者] 群組時,他們具有這兩項作業的權限。只需要在金鑰原則上設定權限,因此您不需要使用者、群組或角色的任何 AWS KMS 權限。如需詳細資訊,請參閱AWS KMS 開發人員指南中的使用金鑰原則

對於預設加密,或者如果您選擇 AWS Managed CMK (aws/xray),權限取決於誰可以存取 X-Ray APIs。任何擁有 PutEncryptionConfig 存取權的人員 (包含在 AWSXrayFullAccess 中) 都可以變更加密組態。若要防止使用者變更加密金鑰,請不要給予他們使用 PutEncryptionConfig 的許可。