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

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

データ認証を設定するには、以下の 4 つのオプションがあります。

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

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

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

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

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

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

  • リソースベースのポリシーを使用して、アプリモニターへのアクセスを管理します。これには、AWS 認証情報なしで認証されていないリクエストを CloudWatch RUM に送信する機能が含まれます。リソースベースのポリシーと RUM の詳細については、「CloudWatch RUM でのリソースベースのポリシーの使用」を参照してください。

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

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