AWS X-Ray と IAM の連携方法 - AWS X-Ray

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

AWS X-Ray と IAM の連携方法

X-Ray へのアクセスを管理するために IAM を使用する前に、X-Ray でどの IAM 機能が使用できるかを理解しておく必要があります。X-Ray や他の AWS のサービス が IAM と連携する方法の概要については、「IAM ユーザーガイド」の「IAM と連携する AWS のサービス」を参照してください。

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

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

ローカルの開発とテストには、読み書きのアクセス許可を持つ IAM ロールを作成します。ロールを引き受け、そのロールの一時的な認証情報を保存します。これらの認証情報は、X-Ray デーモン、AWS CLI、AWS SDK で使用できます。詳細については、「AWS CLI での一時的なセキュリティ認証情報の使用」を参照してください。

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

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

X-Ray アイデンティティベースのポリシー

IAM アイデンティティベースのポリシーでは許可または拒否するアクションとリソース、またアクションを許可または拒否する条件を指定できます。X-Ray は、特定のアクション、リソース、および条件キーをサポートしています。JSON ポリシーで使用するすべての要素については、「IAM ユーザーガイド」の「IAM JSON ポリシーの要素のリファレンス」を参照してください。

アクション

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

JSON ポリシーの Action 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

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 ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、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 が生成されるため、事前にポリシーで予測することはできません。GetGroupUpdateGroup、または DeleteGroup を使用する場合、ワイルドカードとして、または ID を含む正確な ARN として定義できます。

注記

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

X-Ray リソースタイプとその ARN のリストを表示するには、IAM ユーザーガイドの「AWS X-Ray で定義されるリソース」を参照してください。どのアクションで各リソースの ARN を指定できるかについては、AWS X-Ray で定義されるアクションを参照してください。

条件キー

X-Ray にはサービス固有条件キーがありませんが、いくつかのグローバル条件キーの使用がサポートされています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドのAWS グローバル条件コンテキストキー」を参照してください。

X-Ray アイデンティティベースのポリシーの例を表示するには、「AWS X-Ray アイデンティティベースのポリシーの例」を参照してください。

X-Ray リソースベースのポリシー

X-Ray は、Amazon SNS アクティブトレースなど、現在および将来の AWS のサービス 統合のためのリソースベースのポリシーをサポートします。X-Ray リソースベースのポリシーは、他の AWS マネジメントコンソール で更新することも、AWS SDK や CLI を使用して更新することもできます。例えば、Amazon SNS コンソールは、X-Ray にトレースを送信するためのリソースベースのポリシーを自動的に設定しようとします。次のポリシードキュメントは、X-Ray リソースベースのポリシーを手動で設定する例を示しています。

例 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" } } } ] }'

これらの例を使用するには、partitionregionaccount-idtopic-name を特定の AWS パーティション、リージョン、アカウント ID、Amazon SNS トピック名に置き換えます。すべての Amazon SNS トピックに、トレースデータを X-Ray に送信するアクセス許可を付与するには、トピック名を * に置き換えます。

X-Ray タグに基づいた承認

X-Ray グループまたはサンプリングルールにタグをアタッチしたり、リクエストでタグを X-Ray に渡すことができます。タグに基づいてアクセスを制御するにはxray:ResourceTag/key-nameaws: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 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. [ロール] を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

IAM コンソールのキー設定セクション内の主要ユーザーグループにユーザーを追加する場合、彼らにはこれらの両方のオペレーションに対するアクセス許可があります。アクセス許可はキーポリシーでのみ設定する必要があるため、ユーザー、グループ、ロールでの AWS KMS アクセス許可は必要ありません。詳細については、AWS KMS デベロッパーガイドの「キーポリシーの使用」を参照してください。

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