が IAM と AWS X-Ray 連携する方法 - AWS X-Ray

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

が IAM と AWS X-Ray 連携する方法

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

AWS Identity and Access Management (IAM) を使用して、 アカウントのユーザーとコンピューティングリソースに X-Ray アクセス許可を付与できます。IAM は、ユーザーが採用するクライアント (コンソール、 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要素には、ポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連付けられた 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 が生成されるため、事前にポリシーで予測することはできません。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 リソースタイプとその 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 Management Console、または 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" } } } ] }'

これらの例を使用するには、、partition、、 topic-nameを特定の AWS パーティションaccount-id、リージョン、アカウント ID、および Amazon regionSNS トピック名に置き換えます。 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 カスタマーマネージドキーを選択した場合は、キーのアクセスポリシーで、暗号化に使用するアクセス許可を X-Ray に付与できることを確認する必要があります。また、アカウントの他のユーザーがキーにアクセスし、X-Ray コンソールで暗号化されたトレースデータを確認できるようにする必要があります。

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

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

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

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

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