

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

# AWS X-Ray 如何使用 IAM
<a name="security_iam_service-with-iam"></a>

在您使用 IAM 管理對 X-Ray 的存取之前，您應該了解哪些 IAM 功能可與 X-Ray 搭配使用。若要全面了解 X-Ray 和其他 AWS 服務 如何使用 IAM，請參閱《[AWS 服務 IAM 使用者指南》中的該使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) *IAM*。

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

若要[使用 X-Ray 主控台](aws-xray-interface-console.md#xray-console)檢視追蹤映射和區段，您只需要讀取許可。若要啟用主控台存取，請將 `AWSXrayReadOnlyAccess` [受管政策](security_iam_id-based-policy-examples.md#xray-permissions-managedpolicies)新增到您的 IAM 使用者。

針對[本機開發和測試](#xray-permissions-local)，請建立具有讀取和寫入許可的 IAM 角色。[擔任角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)並存放角色的臨時登入資料。您可以搭配 X-Ray 協助程式 AWS CLI、 和 AWS SDK 使用這些登入資料。如需詳細資訊[，請參閱搭配 使用臨時安全登入 AWS CLI](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli)資料。

若要[將受檢測的應用程式部署到 AWS](#xray-permissions-aws) ，請建立具有寫入許可的 IAM 角色，並將其指派給執行您應用程式的資源。 `AWSXRayDaemonWriteAccess`包含上傳追蹤的許可，以及一些讀取許可，以支援使用[抽樣規則](xray-console-sampling.md)。

讀取和寫入政策不包含設定[加密金鑰設定](xray-console-encryption.md)及抽樣規則的許可。使用 `AWSXrayFullAccess` 存取這些設定，或是在自訂政策中新增[組態 API](xray-api-configuration.md)。針對使用您所建立客戶受管金鑰的加密和解密，您也需要[使用金鑰的許可](#xray-permissions-encryption)。

**Topics**
+ [

## X-Ray 身分型政策
](#security_iam_service-with-iam-id-based-policies)
+ [

## X-Ray 資源型政策
](#security_iam_service-with-iam-resource-based-policies)
+ [

## 以 X-Ray 標籤為基礎的授權
](#security_iam_service-with-iam-tags)
+ [

## 於本機執行您的應用程式
](#xray-permissions-local)
+ [

## 在 中執行您的應用程式 AWS
](#xray-permissions-aws)
+ [

## 用於加密的使用者許可
](#xray-permissions-encryption)

## X-Ray 身分型政策
<a name="security_iam_service-with-iam-id-based-policies"></a>

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。X-Ray 支援特定動作、資源和條件金鑰。若要了解您在 JSON 政策中使用的所有元素，請參閱 *IAM 使用者指南*中的 [JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### 動作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

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

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策會使用動作來授予執行相關聯動作的許可。

X-Ray 中的政策動作在動作之前使用下列字首：`xray:`。例如，若要授予某人使用 X-Ray `GetGroup` API 操作擷取群組資源詳細資訊的許可，請在其政策中包含 `xray:GetGroup`動作。政策陳述式必須包含 `Action` 或 `NotAction` 元素。X-Ray 會定義自己的一組動作，描述您可以使用此服務執行的任務。

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

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

您也可以使用萬用字元 (\$1) 來指定多個動作。例如，若要指定開頭是 `Get` 文字的所有動作，請包含以下動作：

```
"Action": "xray:Get*"
```

若要查看 X-Ray 動作清單，請參閱《*IAM 使用者指南*》中的 [定義的動作 AWS X-Ray](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsx-ray.html)。

### Resources
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

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

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```

您可以使用 IAM 政策來控制對 資源的存取。針對支援資源層級許可的動作，您可以使用 Amazon Resource Name (ARN) 來識別要套用政策的資源。

所有 X-Ray 動作都可以在 IAM 政策中使用，以授予或拒絕使用者使用該動作的許可。不過，並非所有 [X-Ray 動作](https://docs.aws.amazon.com/xray/latest/api/API_Operations.html)都支援資源層級許可，這可讓您指定可執行動作的資源。

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

下列 X-Ray 動作支援資源層級許可：
+ `CreateGroup`
+ `GetGroup`
+ `UpdateGroup`
+ `DeleteGroup`
+ `CreateSamplingRule`
+ `UpdateSamplingRule`
+ `DeleteSamplingRule`

以下是 `CreateGroup` 動作的身分型許可政策範例。此範例示範使用與有唯一 ID 之群組名稱 `local-users` 有關的 ARN 做為萬用字元。群組建立時產生的唯一 ID，所以無法在政策中事先預測。使用 `GetGroup`、`UpdateGroup` 或 `DeleteGroup` 時，您可以將此定義為萬用字元或確切的 ARN，包括 ID。

**注意**  
依其名稱定義之取樣規則的 ARN。不像群組 ARN，取樣規則沒有唯一產生的 ID。

若要查看 X-Ray 資源類型及其 ARNs 的清單，請參閱《*IAM 使用者指南*》中的 [定義的資源 AWS X-Ray](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsx-ray.html#awsx-ray-resources-for-iam-policies)。若要了解您可以使用哪些動作指定每個資源的 ARN，請參閱 [AWS X-Ray定義的動作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsx-ray.html)。

### 條件索引鍵
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

X-Ray 不提供任何服務特定的條件金鑰，但支援使用一些全域條件金鑰。若要查看所有 AWS 全域條件金鑰，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

### 範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

若要檢視 X-Ray 身分型政策的範例，請參閱 [AWS X-Ray 身分型政策範例](security_iam_id-based-policy-examples.md)。

## X-Ray 資源型政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

X-Ray 支援目前和未來 AWS 服務 整合的資源型政策，例如 [Amazon SNS 主動追蹤](https://docs.aws.amazon.com/sns/latest/dg/sns-active-tracing.html)。X-Ray 資源型政策可由其他 AWS 管理主控台更新，或透過 AWS SDK 或 CLI 更新。例如，Amazon SNS 主控台會嘗試自動設定資源型政策，以將追蹤傳送至 X-Ray。下列政策文件提供手動設定 X-Ray 資源型政策的範例。

**Example Amazon SNS 主動追蹤的 X-Ray 資源型政策範例**  
此範例政策文件指定 Amazon SNS 將追蹤資料傳送至 X-Ray 所需的許可：  

```
{
    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 建立資源型政策，提供 Amazon SNS 將追蹤資料傳送至 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" } } } ] }'
```
若要使用這些範例，請將 *`partition`*、*`account-id`*、 *`region`*和 取代*`topic-name`*為您的特定 AWS 分割區、區域、帳戶 ID 和 Amazon SNS 主題名稱。若要授予所有 Amazon SNS 主題將追蹤資料傳送至 X-Ray 的許可，請將主題名稱取代為 `*`。

## 以 X-Ray 標籤為基礎的授權
<a name="security_iam_service-with-iam-tags"></a>

您可以將標籤連接至 X-Ray 群組或取樣規則，或在請求中將標籤傳遞至 X-Ray。如需根據標籤控制存取，請使用 `xray:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。如需標記 X-Ray 資源的詳細資訊，請參閱[標記 X-Ray 取樣規則和群組](xray-tagging.md)。

若要檢視身分型政策範例，以根據該資源上的標籤來限制存取資源，請參閱 [根據標籤管理對 X-Ray 群組和抽樣規則的存取](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-manage-sampling-tags)。

## 於本機執行您的應用程式
<a name="xray-permissions-local"></a>

您的檢測應用程式會將追蹤資料傳送至 X-Ray 協助程式。協助程式會緩衝區段文件，並分批上傳至 X-Ray 服務。協助程式需要寫入許可，才能將追蹤資料和遙測上傳到 X-Ray 服務。

當您[在本機執行協助程式時](xray-daemon-local.md)，請建立 IAM 角色、[擔任該角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)，並將臨時登入資料存放在環境變數中，或在使用者`credentials`資料夾中名為 `.aws`的資料夾中。如需詳細資訊[，請參閱搭配 使用臨時安全登入 AWS CLI](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html#using-temp-creds-sdk-cli)資料。

**Example \$1/.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
<a name="xray-permissions-aws"></a>

當您在 上執行應用程式時 AWS，請使用 角色將許可授予執行協助程式的 Amazon EC2 執行個體或 Lambda 函數。
+ **Amazon Elastic Compute Cloud (Amazon EC2)** – 建立 IAM 角色，並將其做為執行個體描述檔連接至 EC2 執行個體。 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)
+ **Amazon Elastic Container Service (Amazon ECS)** – 建立 IAM 角色，並將其做為容器執行個體 [IAM 角色連接至容器執行個體](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html)。
+ **AWS Elastic Beanstalk (Elastic Beanstalk)** – Elastic Beanstalk 在其[預設執行個體描述](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html#concepts-roles-instance)檔中包含 X-Ray 許可。您可以使用預設執行個體描述檔，或是將寫入許可新增到自訂執行個體描述檔。
+ **AWS Lambda (Lambda)** – 將寫入許可新增至函數的執行角色。

**建立角色以搭配 X-Ray 使用**

1. 開啟 [IAM 主控台](https://console.aws.amazon.com/iam/home)。

1. 選擇**角色**。

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

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

1. 針對 **Role Type (角色類型)**，選擇 **Amazon EC2**。

1. 連接下列 受管政策，讓您的應用程式存取 AWS 服務：
   + **AWSXRayDaemonWriteAccess** – 授予 X-Ray 協助程式上傳追蹤資料的許可。

   如果您的應用程式使用 AWS SDK 存取其他 服務，請新增授予這些服務存取權的政策。

1. 選擇 **Next Step (後續步驟)**。

1. 選擇**建立角色**。

## 用於加密的使用者許可
<a name="xray-permissions-encryption"></a>

X-Ray 預設會加密所有追蹤資料和 ，而且您可以將[其設定為使用您管理的金鑰](xray-console-encryption.md)。如果您選擇 AWS Key Management Service 客戶受管金鑰，您需要確保金鑰的存取政策允許您授予 X-Ray 使用它進行加密的許可。您帳戶中的其他使用者也需要存取 金鑰，才能在 X-Ray 主控台中檢視加密的追蹤資料。

對於客戶受管金鑰，請使用允許下列動作的存取政策來設定您的金鑰：
+ 在 X-Ray 中設定金鑰的使用者具有呼叫 `kms:CreateGrant`和 的許可`kms:DescribeKey`。
+ 能夠存取加密追蹤資料的使用者必須具備呼叫 `kms:Decrypt` 的許可。

當您在 IAM 主控台的金鑰組態區段中將使用者新增至金鑰**使用者群組**時，他們具有這兩個操作的許可。只需要在金鑰政策上設定許可，因此您不需要使用者、群組或角色的任何 AWS KMS 許可。如需詳細資訊，請參閱《 [AWS KMS 開發人員指南》中的使用金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

對於預設加密，或者如果您選擇 AWS 受管 CMK (`aws/xray`)，許可取決於誰可以存取 X-Ray APIs。任何擁有 [https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html](https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html) 存取權的人員 (包含在 `AWSXrayFullAccess` 中) 都可以變更加密組態。若要防止使用者變更加密金鑰，請不要給予他們使用 [https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html](https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html) 的許可。