本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
如何 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
動作包含在他們的原則中。政策陳述式必須包含 Action
或 NotAction
元素。X-Ray 會定義自己的一組動作,說明您可以使用此服務執行的工作。
若要在單一陳述式中指定多個動作,請用逗號分隔,如下所示:
"Action": [ "xray:action1", "xray:action2"
您也可以使用萬用字元 (*) 來指定多個動作。例如,若要指定開頭是 Get
文字的所有動作,請包含以下動作:
"Action": "xray:Get*"
若要查看 X-Ray 動作的清單,請參閱《IAM使用指南》 AWS X-Ray中的〈定義的動作〉。
資源
管理員可以使用 AWS JSON策略來指定誰可以存取什麼內容。也就是說,哪個主體在什麼條件下可以對什麼資源執行哪些動作。
Resource
JSON原則元素會指定要套用動作的一個或多個物件。陳述式必須包含 Resource
或 NotResource
元素。最佳做法是使用其 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
、或時 UpdateGroup
DeleteGroup
,您可以將其定義為萬用字元或完全相同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-name
aws:RequestTag/
或 key-name
aws: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 函數。
-
Amazon 彈性運算雲端 (AmazonEC2) — 建立IAM角色並將其作為EC2執行個體設定檔連接到執行個體。
-
Amazon 彈性容器服務 (AmazonECS) — 建立IAM角色,並將其作為容器執行個體IAM角色連接至容器執行個體。
-
AWS Elastic Beanstalk (彈性魔豆莖)— Elastic Beanstalk 在其默認實例配置文件中包含 X-Ray 權限。您可以使用預設執行個體描述檔,或是將寫入許可新增到自訂執行個體描述檔。
-
AWS Lambda (Lambda) — 將寫入權限新增至函數的執行角色。
建立與 X-Ray 配合使用的角色
-
開啟主IAM控台
。 -
選擇角色。
-
選擇 Create New Role (建立新角色)。
-
在 Role Name (角色名稱) 中,輸入
xray-application
。選擇 Next Step (後續步驟)。 -
對於「角色類型」,請選擇 Amazon EC2。
-
附加下列受管理政策,讓您的應用程式存取權限 AWS 服務:
-
AWSXRayDaemonWriteAccess— 授予 X-Ray 守護程序上傳追蹤資料的權限。
如果您的應用程式使 AWS SDK用存取其他服務,請新增授與這些服務存取權的原則。
-
-
選擇 Next Step (後續步驟)。
-
選擇建立角色。
用於加密的使用者許可
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
的許可。