AWS X-Ray
開発者ガイド

AWS X-Ray におけるアイデンティティとアクセスの管理

AWS Identity and Access Management (IAM) を使用して、X-Ray のアクセス許可をアカウントのユーザーやコンピューティングリソースに付与できます。IAM は、ユーザーが採用するクライアント (コンソール、AWS SDK、AWS CLI) に関係なく、API レベルで X-Ray サービスへのアクセスを制御してアクセス許可を均一に適用します。

X-Ray コンソールを使用してサービスマップやセグメントを表示する場合に必要なのは、読み取りアクセス許可だけです。コンソールアクセスを有効にするには、AWSXrayReadOnlyAccess 管理ポリシーを IAM ユーザーに追加します。

ローカル開発とテスト」で、読み書きのアクセス許可を持つ IAM ユーザーを作成します。ユーザーのアクセスキーを生成し、標準の AWS SDK の場所に保存します。これらの認証情報は、X-Ray デーモン、AWS CLI、および AWS SDK で使用できます。

計測したアプリケーションを AWS にデプロイするには、読み書きアクセス許可を持つ IAM ロールを作成し、アプリケーションを実行しているリソースに割り当てます。AWSXRayDaemonWriteAccess には、トレースといくつかの読み取りアクセス許可をアップロードするとともに、サンプリングルールの使用をサポートするためのアクセス許可が含まれています。

読み取りおよび書き込みポリシーには、暗号化キー設定とサンプリングルールを指定するためのアクセス許可は含まれていません。これらの設定にアクセスするか、カスタムポリシーに設定 API を追加するには、AWSXrayFullAccess を使用します。作成したカスタマー管理キーで暗号化と複合を行うには、キーを使用するためのアクセス許可も必要です。

X-Ray の IAM 管理ポリシー

アクセス許可を簡単に付与できるよう、IAM は各サービスの管理ポリシーに対応しています。新しい API がリリースされると、新しいアクセス許可を使用して、サービスでこれらの管理ポリシーをアップデートできます。AWS X-Ray は、読み取り専用、書き込み専用、および管理者のユースケース向けの管理ポリシーを提供します。

  • AWSXrayReadOnlyAccess – X-Ray コンソール、AWS CLI、または AWS SDK を使用して、X-Ray API からトレースデータとサービスマップを取得するための読み取りアクセス許可。サンプリングルールを表示するためのアクセス許可が含まれています。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries", "xray:BatchGetTraces", "xray:GetServiceGraph", "xray:GetTraceGraph", "xray:GetTraceSummaries", "xray:GetGroups", "xray:GetGroup" ], "Resource": [ "*" ] } ] }
  • AWSXRayDaemonWriteAccess – X-Ray デーモン、AWS CLI、または AWS SDK を使用して、X-Ray API にセグメントドキュメントとテレメトリをアップロードするための書き込みアクセス許可。サンプリングルールを取得してサンプリング結果を報告するための読み取りアクセス許可が含まれています。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries" ], "Resource": [ "*" ] } ] }
  • AWSXrayFullAccess – 読み取りアクセス許可、書き込みアクセス許可、および暗号化キー設定とサンプリングルールを指定するためのアクセス許可を含む、すべての X-Ray API を使用するためのアクセス許可。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:*" ], "Resource": [ "*" ] } ] }

管理ポリシーを IAM ユーザー、グループ、ロールに追加するには

  1. IAM コンソールを開きます。

  2. インスタンスプロファイル、IAM ユーザー、または IAM グループに関連付けられたロールを開きます。

  3. [アクセス許可] で、管理ポリシーをアタッチします。

IAM ポリシーでリソースを指定する

IAM ポリシーを使用してリソースへのアクセスを制御できます。リソースレベルのアクセス許可をサポートするアクションの場合は、Amazon リソースネーム (ARN) を使用して、ポリシーが適用されるリソースを識別します。

IAM ポリシーではすべての X-Ray アクションを使用して、そのアクションを使用するアクセス許可をユーザーに付与または拒否できます。ただし、すべての X-Ray アクションが、アクションを実行することができるリソースを指定できる、リソースレベルのアクセス許可をサポートしているわけではありません。

リソースレベルの権限をサポートしていないアクションの場合、"*" をリソースとして使用する必要があります。

次の X-Ray アクションは、リソースレベルのアクセス許可をサポートします。

  • CreateGroup

  • GetGroup

  • UpdateGroup

  • DeleteGroup

  • CreateSamplingRule

  • UpdateSamplingRule

  • DeleteSamplingRule

以下は、CreateGroup アクションのアイデンティティベースのアクセス許可ポリシーの例です。この例では、グループ名 local-users に関連する ARN を使用する一意の ID をワイルドカードとして使用します。グループが作成されたときに一意の ID が生成されるため、事前にポリシーで予測することはできません。GetGroupUpdateGroup、または DeleteGroup を使用する場合、ワイルドカードとして、または ID を含む正確な ARN として定義できます。

{ "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 は、名前によって定義されます。グループ ARN とは異なり、サンプリングルールには一意に生成された ID がありません。

アプリケーションをローカルで実行する

計測したアプリケーションから X-Ray デーモンがトレースデータに送信されます。デーモンは、セグメントドキュメントをバッファし、バッチ処理で X-Ray サービスにアップロードします。デーモンは、X-Ray サービスにトレースデータおよびテレメトリをアップロードする書き込みのアクセス許可が必要です。

ローカルでデーモンを実行したら、IAM ユーザーのアクセスキーおよびシークレットキーをユーザーフォルダのフォルダ (.aws) 内にあるファイル (credentials) に保存します。

例 ~/.aws/credentials

[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

AWS SDK または AWS CLI を使用するための認証情報をすでに設定済みの場合は、デーモンでこれらを使用できます。複数のプロファイルが利用可能な場合はデフォルトのプロファイルが使用されます。

AWS でアプリケーションを実行する

AWS でアプリケーションを実行する場合は、ロールを使用して Amazon EC2 インスタンス、またはデーモンを実行する Lambda 関数にアクセス許可を付与します。

  • Amazon Elastic Compute Cloud (Amazon EC2) – IAM ロールを作成し、インスタンスプロファイルとして EC2 インスタンスにアタッチします。

  • Amazon Elastic Container Service (Amazon ECS) – IAM ロールを作成し、コンテナインスタンスの IAM ロールとしてコンテナインスタンスにアタッチします。

  • AWS Elastic Beanstalk (Elastic Beanstalk) – Elastic Beanstalk のデフォルトのインスタンスプロファイルには、X-Ray のアクセス許可が含まれます。デフォルトのインスタンスプロファイルを使用するか、カスタムのインスタンスプロファイルに書き込みのアクセス許可を追加できます。

  • AWS Lambda (Lambda) – 関数の実行ロールに書き込みアクセス許可を追加します。

X-Ray で使用するためのロールを作成するには

  1. IAM コンソールを開きます。

  2. [Roles (ロール)] を選択します。

  3. [Create New Role (新しいロールの作成)] を選択します。

  4. [ロール名] に xray-application を入力します。[Next Step (次のステップ)] を選択します。

  5. [Role Type (ロールタイプ)] で、[Amazon EC2] を選択します。

  6. 管理ポリシーをアタッチして AWS のサービスへのアクセス権限をアプリケーションに付与します。

    • AWSXRayDaemonWriteAccess – X-Ray デーモンにトレースデータをアップロードするためのアクセス許可を付与します。

    • [AmazonS3ReadOnlyAccess] (Amazon EC2 のみ) – Amazon S3 から X-Ray をダウンロードするためのアクセス許可をインスタンスに付与します。

    アプリケーションが AWSSDK を使用して他のサービスにアクセスする場合は、これらのサービスへのアクセス権限を付与するポリシーを追加します。

  7. [Next Step (次のステップ)] を選択します。

  8. [Create Role (ロールの作成)] を選択します。

暗号化のユーザーアクセス許可

X-Ray は、すべてのトレースデータを暗号化します。デフォルトでは、管理するキーを使用するように設定できます。AWS Key Management Service のカスタマー管理のカスタマーマスターキー (CMK) を選択した場合は、キーのアクセスポリシーにより、CMK を使用して暗号化を行うためのアクセス許可を X-Ray に付与できるようにする必要があります。また、アカウントの他のユーザーがキーにアクセスし、X-Ray コンソールで暗号化されたトレースデータを確認できるようにする必要があります。

カスタマー管理の CMK に関しては、以下のアクションが可能なアクセスポリシーを使用してキーを設定します。

  • X-Ray でキーを設定するユーザーが、kms:CreateGrantkms:DescribeKey を呼び出すためのアクセス許可を持つ。

  • 暗号化されたトレースデータにアクセスできるユーザーが、kms:Decrypt を呼び出すためのアクセス許可を持つ。

IAM コンソールのキー設定セクションで [Key users (キーユーザー)] グループにユーザーを追加すると、これら両方の操作が行えるアクセス許可が付与されます。アクセス許可はキーポリシーでのみ設定する必要があるため、IAM のユーザー、グループ、またはロールに関する AWS KMS のアクセス許可は必要ありません。詳細については、『AWS KMS 開発者ガイド』の「キーポリシーの使用」を参照してください。

デフォルトの暗号化、または AWS 管理の CMK (aws/xray) を選択した場合に関しては、X-Ray API にアクセスできるユーザーにアクセス許可が付与されます。AWSXrayFullAccess に含まれる PutEncryptionConfig にアクセスできるユーザーはすべて、暗号化の設定を変更することが可能です。ユーザーが暗号化キーを変更できないようにする場合は、PutEncryptionConfig を使用するためのアクセス許可を付与しないようにしてください。