ステップ 1: AWS にデータを送信することを、アプリケーションに許可する - Amazon CloudWatch

ステップ 1: AWS にデータを送信することを、アプリケーションに許可する

CloudWatch RUM を使用するアプリケーションには、認証が必要です。

この認証を設定するためには、以下の 3 つのオプションがあります。

  • CloudWatch RUM に、アプリケーションの新しい Amazon Cognito ID プールを作成させます。この方法では、セットアップに必要な労力が最小限に抑えられます。これがデフォルトのオプションです。

    ID プールには、認証されていない ID が含まれています。これにより、CloudWatch RUM のウェブクライアントは、アプリケーションのユーザーを認証することなく CloudWatch RUM にデータを送信できます。

    Amazon Cognito ID プールには、アタッチ済みの IAM ロールも含まれています。Amazon Cognito 内の認証されていない ID により、ウェブクライアントは、CloudWatch RUM にデータを送信することが許可された IAM ロールを引き受けることができます。

  • 既存の Amazon Cognito ID プールを使用する この場合、ID プールにアタッチされている IAM ロールを、同時に変更する必要があります。このオプションは、認証されていないユーザーをサポートするアイデンティティプールに使用します。ID プールは、同じリージョンからのみ使用できます。

  • 先に設定を行ってある、既存の ID プロバイダからの認証を使用します。この場合は、ID プロバイダから認証情報を取得する必要があります。またこれらの認証情報は、アプリケーションから RUM ウェブクライアントに転送する必要があります。

    認証されたユーザーのみをサポートするアイデンティティプールには、このオプションを使用します。

以下のセクションで、これらのオプションについてさらに詳しく説明します。

CloudWatch RUM が、新しい Amazon Cognito ID プールを作成します。

これが、設定のための最も簡単なオプションで、これを選択した場合は、それ以上のセットアップ作業は必要ありません。このオプションを使用するには、管理用のアクセス許可が必要です。詳細については、「CloudWatch RUM 使用のための IAM ポリシー」を参照してください。

このオプションを使用すると、CloudWatch RUM は以下のリソースを作成します。

  • 新しい Amazon Cognito ID プール

  • 認証されていない Amazon Cognito ID これにより RUM のウェブクライアントは、アプリケーションのユーザーを認証することなく、IAM ロールを引き受けることが可能になります。

  • RUM ウェブクライアントが引き受ける IAM ロール。このロールにアタッチされた IAM ポリシーにより、アプリケーションモニターのリソースを使用しながら PutRumEvents APIを実行することが許可されます。つまり、RUM ウェブクライアントから RUM にデータを送信できるようにします。

RUM ウェブクライアントは、Amazon Cognito アイデンティティを使用して、AWS の認証情報を取得します。取得された AWS 認証情報は、対象の IAM ロールに関連付けられます。この IAM ロールでは、AppMonitor リソースに対し PutRumEvents を使用することが許可されています。

Amazon Cognito は、アプリケーションが CloudWatch RUM にデータを送信できるようにするための、必要なセキュリティトークンを送信します。CloudWatch RUM が生成する JavaScript コードスニペットには、以下のような、認証を有効にするための行が含まれています。

{ identityPoolId: [identity pool id], // e.g., 'us-west-2:EXAMPLE4a-66f6-4114-902a-EXAMPLEbad7' } );

既存の Amazon Cognito ID プールを使用する

既存の Amazon Cognito ID プールを使用する場合は、アプリケーションを CloudWatch RUM に追加する際に、その ID プールを指定します。このプールは、認証されていない ID に対するアクセスの有効化が、サポートされている必要があります。ID プールは、同じリージョンからのみ使用できます。

また、この ID プールに関連付けられている IAM ロールにアタッチされている IAM ポリシーに対し、次のアクセス許可を追加する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rum:PutRumEvents", "Resource": "arn:aws:rum:[region]:[accountid]:appmonitor/[app monitor name]" } ] }

これを設定することで Amazon Cognito は、アプリケーションが CloudWatch RUM にアクセスできるようにするための、必要なセキュリティトークンを送信するようになります。

サードパーティのプロバイダー

サードパーティーのプロバイダーからのプライベート認証の使用を選択する場合は、ID プロバイダーから認証情報を取得し、AWS に転送する必要があります。これを行う最良の方法の 1 つは、セキュリティトークンベンダーを利用することです。これには、AWS Security Token Service を使用する Amazon Cognito を含め、任意のセキュリティトークンベンダーが使用できます。AWS STS の詳細については、「Welcome to the AWS Security Token Service API Reference」参照してください。

このシナリオで Amazon Cognito をトークンベンダーとして使用する場合は、認証プロバイダーと連携するように Amazon Cognito を設定します。詳細については、「Amazon Cognito ID プール (フェデレーティッド ID) の使用開始方法」を参照してください。

Amazon Cognito で ID プロバイダーとの連携を設定し終えたら、以下の操作も実行する必要があります。

  • 以下のアクセス許可を持つ IAM ロールを作成します。アプリケーションは、AWS へのアクセスにこのロールを使用します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rum:PutRumEvents", "Resource": "arn:aws:rum:[region]:[accountID]:appmonitor/[app monitor name]" } ] }
  • アプリケーションがプロバイダーからの認証情報を CloudWatch RUM に渡すようにするため。以下を追加します。アプリケーションに行を挿入します。これは、ユーザーがアプリケーションにサインインし、AWS へのアクセスに使用する資格情報がアプリケーションで受け取られた後に実行されます。

    cwr('setAwsCredentials', {/* Credentials or CredentialProvider */});

AWS JavaScript SDK での認証情報プロバイダーの詳細については、SDK for JavaScript v3 デベロッパーガイドの「ウェブブラウザでの認証情報の設定」、SDK for JavaScript v2 デベロッパーガイドの「ウェブブラウザでの認証情報の設定」、および @aws-sdk/credential-providers を参照してください。

また、CloudWatch RUM ウェブクライアント向け SDK を使用して、ウェブクライアントの認証方法を設定することもできます。ウェブクライアント SDK の詳細については、「CloudWatch RUM web client SDK」を参照してください。