

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS X-Ray が IAM と連携する方法
<a name="security_iam_service-with-iam"></a>

X-Ray へのアクセスを管理するために IAM を使用する前に、X-Ray でどの IAM 機能が使用できるかを理解しておく必要があります。X-Ray およびその他の が IAM と AWS のサービス 連携する方法の概要を把握するには、IAM *ユーザーガイド*の[AWS のサービス 「IAM と連携する](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」を参照してください。

 AWS Identity and Access Management (IAM) を使用して、アカウントのユーザーとコンピューティングリソースに X-Ray アクセス許可を付与できます。IAM は、ユーザーが採用するクライアント (コンソール、 AWS SDK AWS CLI) に関係なく、アクセス許可を均一に強制するために、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 ユーザーガイド」の「[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>

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件下で****アクション**を実行できるかということです。

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)」を参照してください。

### リソース
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どの**プリンシパル**がどの**リソース**に対してどのような**条件**下で**アクション**を実行できるかということです。

`Resource` JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) を使用してリソースを指定します。リソースレベルのアクセス許可をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (\$1) を使用します。

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

IAM ポリシーを使用してリソースへのアクセスを制御できます。リソースレベルのアクセス許可をサポートするアクションの場合は、Amazon リソースネーム (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` アクションのアイデンティティベースのアクセス許可ポリシーの例です。この例では、グループ名 `local-users` に関連する ARN を使用する一意の ID をワイルドカードとして使用します。グループが作成されたときに一意の ID が生成されるため、事前にポリシーで予測することはできません。`GetGroup`、`UpdateGroup`、または `DeleteGroup` を使用する場合、ワイルドカードとして、または ID を含む正確な ARN として定義できます。

**注記**  
サンプリングルールの ARN は、名前によって定義されます。グループ ARN とは異なり、サンプリングルールには一意に生成された ID がありません。

X-Ray リソースタイプとその ARN のリストを表示するには、*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 は、[Amazon SNS アクティブトレース](https://docs.aws.amazon.com/sns/latest/dg/sns-active-tracing.html)など、現在および将来の AWS のサービス 統合のためのリソースベースのポリシーをサポートしています。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`*、*`region`*、、 *`topic-name`*を特定の AWS パーティション*`account-id`*、リージョン、アカウント 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)、一時的な認証情報を環境変数に保存するか、ユーザーフォルダー内の `.aws` フォルダーの `credentials` ファイルに保存します。詳細については、「[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 ロールを作成し、「[インスタンスプロファイル](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)」として EC2 インスタンスにアタッチします。
+ **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. [**Create Role (ロールを作成)**] を選択します。

## 暗号化のユーザーアクセス許可
<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。`AWSXrayFullAccess` に含まれる [https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html](https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html)にアクセスできるユーザーはすべて、暗号化の設定を変更することが可能です。ユーザーが暗号化キーを変更できないようにする場合は、[https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html](https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html) を使用するためのアクセス許可を付与しないようにしてください。