Amazon Web Services ブログ

Amazon Connect S3バケットへのアクセスを制限する

このブログでは、Amazon S3へのカスタマーアクセスポリシーを作成する方法について説明します。 これらのバケットはデフォルトでは公開されていません。このブログではさらに踏み込んで、Amazon Connectのレポートと通話録音が保存されているバケットをAmazon Connectにロックします。 Amazon Connectアカウントに割り当てられた適切な権限を使用することで、スケジュールされたレポートと保存されたレポートを表示したり、Amazon Connectインターフェイスから通話録音を再生したりできます。 セキュリティとデータのプライバシーは多くの顧客にとって最優先事項であるため、組織やプライバシーの要件を遵守することが重要です。 そのためには、IAMポリシーを使用して、Amazon S3に格納されているAmazon Connectアーティファクトのセキュリティをさらに強化することができます。 これは、顧客情報を危険にさらす可能性があるデータ漏洩または侵害を回避するのに役立ちます。 これにより、顧客のプライバシーを維持するためのセキュリティが強化され、ローカルの規制を遵守するのに役立ちます。

警告

セキュリティ設定を変更するときは注意してください。 これらの変更は恒久的なものであり、あなた自身のアクセスを制限してしまうかもしれません。まずはテストバケットで試すことをお勧めします。 もし間違えると、管理しようとしているリソースへのすべてのアクセスが失われるかもしれません。 これは、Amazon Connectインスタンスの動作に悪影響を及ぼす可能性があります。本番環境で行う前に、テストS3バケットでアクセス制限を試してみることを検討してください。

この記事で説明する次の手順は、S3バケットへのアクセスを制限するために必要です。

  • インスタンスに使用されているS3バケットを特定する
  • Connectに使用されているIAMロールを特定する
  • コマンドラインを使ってロールIDを特定する
  • S3バケットポリシーを作成する
  • S3バケットへのアクセスを確認する

それでは始めましょう。

S3バケットを特定する

Amazon Connectインスタンスに関連付けられているバケットを特定します。 インスタンスの作成時に既存のS3バケットを使用しなかった場合は、新しいバケットが作成されています。 次の例に示すように、Amazon Connectダッシュボードで、Amazon Connectに使用されているバケットを見つけることができます。


私のインスタンスの例で使用されているバケット名は、connect-25fd0a3be3ef です。

IAMロールを特定する

Amazon Connectサービスに使用されているIAMロールを特定します。Amazon Connectインスタンスでの権限は、IAMロールにより許可されています。

注:Amazon ConnectはService-linkedロールを導入しました 。 この記事の手順は、2018年10月17日にService-linkedロールが導入される前に作成されたAmazon Connectインスタンスに適用されます。 近日中に、この記事をService-linkedロールに関する情報で更新する予定です。

Amazon ConnectサービスのIAMロールを見つけるには

  1. IAMコンソールを開きます。
  2. Amazon Connectインスタンスを作成したときに作成されたロールを見つけます。
    複数のインスタンスを作成した場合は、作成時間を確認することで、どのロールが各インスタンスに関連付けられているかを判断できます。 作成時間の列が表示されていない場合は、ページの右上隅にある歯車のアイコンから追加できます。

どのロールがどのインスタンスに対応しているか判断できない場合は、ロールがアクセス権を持つS3バケットが、そのインスタンスで使用されるバケットと一致するかを確認します。

正しいロールを使用していることを確認する

  1. 確認したいロールを選択します。
  2. 次の例に示すように、ポリシーの横にある矢印を選択してポリシーを展開します。

 

ロールが権限を持っているS3バケットは、ポリシーのResourcesセクションに表示されます。

たとえば、私の例では、S3バケットは connect-25fd0a3be3ef という名前です。 これは先ほど見たインスタンス設定に表示されていたバケット名と一致するので、それが正しいロールであることがわかります。

同じページで、ロールのAmazonリソースネーム(ARN)を取得します。 次の例に示すように、SummaryセクションにロールのARNがあります。

注意

ARNを取得するときは、S3バケットから自分自身のアクセス権を失わないように注意してください。 次の手順で使用するロールのARNをコピーするには、Copy to clipboard アイコンを使用します。 IAMコンソールを再度開かなくてよいように、ARNをテキストドキュメントなどに貼り付けておいてください。

私のインスタンスで使用されているロールのARNは

connect-access-role-e3529bf0-6678-4ec4-8f66-a0fdd58cbcd9 

ロールIDを特定する

AWS Command Line Interface (AWS CLI) を使用して、S3バケットをロックするロールのIDを見つけます。

ロールIDを見つけるには

  1. AWS CLIを開きます。
  2. プロンプトで、次のコマンドを入力します。
    aws iam get-role –role-name connect-access-role-e3529bf0-6678-4ec4-8f66-a0fdd58cbcd9
  3. 次の例に示すように、 ロールIDの値をコピーします。

警告

ロールIDをS3バケットに割り当てると、そのロールだけがS3バケットとその中身にアクセスできます。 このユーザーは、バケット内のアイテムを表示および変更したり、バケットのポリシーを表示したりできます。 AWSマネジメントコンソールにもアクセスできる管理者ユーザーアカウントを使用することをお勧めします。

次のステップでは、すべてのAWSサービスを管理できるAdminロールのロールIDを見つけます。

Amazon ConnectサービスロールのロールIDを見つけるには

  1. AWS CLIを開きます。
  2. プロンプトで、次のコマンドを入力します。
    aws iam get-role --role-name Admin
  3. 管理者ロールのロールIDをコピーして、 後で使用するためにテキストドキュメントなどに貼り付けます。

このロールIDと、以前にコピーしたAmazon ConnectサービスアカウントのロールIDは、S3バケットのポリシーを作成するのに使用します。

S3バケットポリシーを作成する

次の例に示すように、S3バケットに割り当てるポリシーを作成します。

{
  "Version": "2012-10-17",
  "Statement": [{
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::connect-25fd0a3be3ef",
        "arn:aws:s3:::connect-25fd0a3be3ef/*"
      ],
      "Condition": {
         "StringNotLike":{
           "aws:userId":[
             "AROAJJ4OT5B3EVMNARNW6:*",
             "AROAINV7BYMRZP3NV66DI:*"
      ]}}
  }]
}

このポリシーは、すべてのS3アクションを拒否し、特定のS3バケットおよびその中身へのアクセスを拒否します。 Effect: Deny ステートメントは、ポリシーがアクションまたはリソースへのアクセスを拒否するために使用されていることを示します。 StringNotLike条件は、aws:userIdに含まれていないすべてのアカウントに対してアクセスを拒否しています。

この例では、アクセス許可を割り当てるS3バケットのARNが Resource セクションに表示されています 。 それは、arn:aws:s3 ::: connect-25fd0a3be3ef です。

Resourceセクションに表示されている2番目の項目は、S3バケットのARNですが、その後に /* が付いています。 これにより、S3バケット内のすべてのサブフォルダとオブジェクトを含めるポリシーが割り当てられます。 このポリシーをコピーして、S3バケットのARNとユーザーIDの値を、あなたのS3バケットとロールの値に置き換えます。

バケットポリシーを割り当てるには

  1. S3コンソールを開きます。
  2. ポリシーを適用するバケットの名前を選択してください。
  3. アクセス権限 タブを選択し、 バケットポリシー を選択します。
  4. あなたの値で書き換えたポリシーをポリシーエディタに貼り付けます。 ポリシーに必ず開始と終了の括弧を含めるようにしてください。
  5. 保存を選択します 。

ポリシーを保存すると、管理者ロールとAmazon Connectサービスロールのみがバケットとその中のすべてのファイルにアクセスできます。 あなたや他の誰かが別のアカウントを使ってバケットにアクセスしようとすると、 アクセス拒否エラーメッセージが表示されます。


それでも、AWSアカウントのroot adminを使用してバケットにアクセスできます。 ただし、十分な権限を持つユーザーのみがAmazon Connect内から通話録音にアクセスできます。

S3バケットへのアクセスを確認する

Amazon Connectからバケットにアクセスできることを確認するには、問い合わせを検索して、問い合わせに関連付けられている録音をきいてみます。 これは、問い合わせフローで通話録音を有効にしていることを前提としています。 次の例に示すように、 問い合わせの検索を使用して問い合わせを検索できます。

次の図に示すように、問い合わせに関連付けられている録音を再生します。

通話録音を再生する権限がある場合は、次の例に示すように、通話録音が開いて再生されます。

これであなたのS3バケットは安全です。

概要

このブログでは、適切な権限を持つユーザーとサービスロールのみがバケットへのアクセスを許可されるように、Amazon S3バケットにIAMポリシーを適用する方法を説明しました。 適切な権限を持たない匿名ユーザー(public-read / public-read-write権限を持つ)、認証されたユーザー、およびサービスロールはバケットにアクセスできません。

原文:https://aws.amazon.com/jp/blogs/contact-center/restrict-access-to-your-amazon-connect-s3-bucket/

翻訳:プロフェッショナルサービス 川嶋俊貴 (kawatosh@)