Treasure Data CDP<第25弾>AssumeRoleを使ってTreasure Data CDPとAmazon S3を連携してみた!(前編)
投稿者:岡田

NI+C マーケソリューションチームです:)
本Tech Blogでは、NI+Cで取り扱っているTreasure Data CDPを紹介していきます。
本日は 「AssumeRole使ってTreasure Data CDPとAmazon S3を連携してみた!(前編)」のテーマとなります。
今回は、Treasure Data CDPとAmazon S3を認証する方法の中でもAssumeRoleを使用した認証方法をご紹介します。なお、データのインプットやアウトプットについては、後編で解説いたします。
こちらも併せてお読みいただくと、さらに理解が深まると思いますので、ぜひご覧ください!
Treasure Data CDP<第22弾>Treasure Data CDPとGoogle スプレッドシートを連携してみた!(前編)
Treasure Data CDP<第24弾>Treasure Data CDPとGoogle スプレッドシートを連携してみた!(後編)
アジェンダ
- Treasure Data CDPとAmazon S3の認証について
- AssumeRoleについて
- AssumeRoleとは?
- AssumeRoleの仕組み
- AssumeRoleの設定方法について
- Treasure Data CDP側の設定
- AWS側の設定
- まとめ
1.Treasure Data CDPとAmazon S3の認証について
Treasure Data CDPとAmazon S3の主な認証としては以下の方法があります。

この中で、セキュアな順に並べると以下の順番になります。
assume_role > session > basic > anonymous
最もセキュアで推奨されているのが、今回紹介する「assume_role」となります。
そのため、セキュリティを意識した運用には、こちらを採用するのが望ましいです。
なぜ、セキュアであるのかについては、後ほど説明します!

Amazon S3と連携を行うためのTreasure Data CDP側の主なコネクターとしては、上記の2種類があります。
違いとしてはサポートされている認証方法にあります。

認証方法の違いは上記のようになっています。
Amazon S3との認証方法は4つの中から選択でき、利用したい認証方法に合わせて、Treasure Data CDP側のコネクターを使い分ける必要があります。
今回紹介する認証方法「assume_role」を利用するには、「Amazon S3 v2」のコネクターを利用する必要があると分かります。
ではここから、AssumeRoleについて紹介していきたいと思います。
そのあと、実際にTreasure Data CDPとの連携をしていきます!!
2.AssumeRoleについて
・AssumeRoleとは?
AssumeRoleは、AWSのサービスの1つで、一時的に別の権限セットを使用できるようにする機能です。
簡単に言えば、普段はできないことを、一時的に特別な許可をもらってできるようにする仕組みです。
例えば、あなたがアルバイトスタッフであるとします。通常、アルバイトは社員専用の部屋に入ることはできません。しかし、特別な作業を任され、社員専用の部屋に入る必要がある場合、社員から一時的に部屋の鍵を借りて入室し、作業を行います。作業が終了したら部屋を退出し、鍵を返却します。この「一時的に必要な権限(鍵)を借りて、作業が終われば返却する」というプロセスを実現するのが、AssumeRoleのイメージです。
この仕組みがセキュリティ面で優れている理由としては、以下の点が挙げられます。
1.一時的な権限付与
必要なタイミングで必要な権限を特定のユーザーに一時的に付与するため、常時使用可能なアクセス権限を持たせないことで、過剰な権限を防ぐことができます。この「最小権限の原則」に基づいた設計は不正利用のリスクを大きく軽減します。
2.期限の明確化
付与される権限には有効期限が設定されるため、不要になった権限が自動的に無効化されます。これにより、万が一、他者がその権限を利用しようとした場合でも、期限が切れることでセキュリティリスクを抑えることができます。
3.証明書やトークンの管理
AssumeRoleで生成される一時的な認証情報(セッションキーやトークン)はAWSが発行・管理しており、そのトークンも期限付きです。この仕組みにより、盗まれたり、漏洩した場合でも悪用される可能性を抑えることができます。
このように、AssumeRoleは一時的な権限付与を通じて、過剰な権限の付与や権限の長期的な有効化によるリスクを減少させ、セキュリティリスクを軽減する非常に有効な機能となっています。
・AssumeRoleの仕組み
下記はAssumeRoleの仕組みを簡単に図解したものとなります。

AssumeRoleはIAMロールに以下を定義することで利用可能になります。
① 信頼ポリシー
信頼ポリシーは、「どのユーザーやリソースがIAMロールを借りることができるか」を定義します。
これに基づき、指定されたユーザーやリソースが一時的にIAMロールを使用する権利を持つようになります。
② 許可ポリシー
許可ポリシーは、「借りたIAMロールを使ってどのリソースに対して何を行えるか」を定義します。
IAMロールを借りたユーザーやリソースは、このポリシーに基づき特定の操作を実行できます。
つまり、IAMロールは「○○に対して○○ができるという権限を持つロール」であり、「その権限は○○が借りることを許可されている場合にのみ有効」という仕組みを持っています。このIAMロールの権限を一時的に利用するプロセスを「AssumeRole」と呼びます。
3.AssumeRoleの設定方法について
では、ここからTreasure Data CDP側での設定とAWS側での設定に分けて説明していきます。
Treasure Data CDP側の設定としては、Amazon S3専用のコネクターがあるので、そこから「Authentication」と呼ばれる認証を作成・設定します。
AWS側の設定としては、AssumeRoleをするための「IAMロール」を作成・設定していきます。
・Treasure Data CDP側の設定
Treasure Data CDPのコンソールのカタログから「Amazon S3 v2」を選択します。
AssumeRoleはS3 v2でのみ利用可能な機能です。

上図のAmazon S3の部分にカーソルを合わせると「Create Authentication」というボタンが表示されるのでこちらを押下します。

Authentication Methodのプルダウンから「assume_role」を選択します。
すると、assume_roleに必要な項目を入力するフォームへと変化します。

各項目の内容を記載いたします。
・Endpoint
AWSのエンドポイントを設定します。
特別な理由がない限りはリージョンの設定のみで問題ないので今回は空白としています。
・Region
AWSのリージョンを指定します。
AWSコンソール上で確認が可能です。
・Authentication Method
認証方法を選択できます。
こちらを変更するとフォーマットも変更されます。今回は「assume_role」を指定しており、フォーマットも変更されています。
・TD’s Instance Profile
TDコンソールによって自動発行されます。値の数値部分は、IAMロールを作成する際に使用するアカウントIDとなります。
・Account ID
AWSのアカウントIDを入力します。
AWSコンソール上で確認が可能です。
・Your Role Name
AWS側で後ほど作成予定のRoleの名前を入力します。
・External ID(必ずメモで残しておく)
TDコンソールによって自動発行される、Treasure Data CDPからAWSリソースにアクセスする時に利用される識別子となります。このIDは、AWS側で設定を行う際に必要となります。
※なお、External IDは作成時にしか表示されないため、忘れてしまった場合は再度Authenticationを作成する必要があります。そのため、IDは必ずメモで残しておきましょう。
・Duration In Seconds
assume_roleによって得られた認証情報の有効期限を設定します。
今回はデフォルトの3600秒のままとしています。
※単位は秒となります。
入力出来たら、右下の「Continue」を押下します。

最後に、このAuthenticationの名前を入力して右下の「Done」を押下します。
これで、Treasure Data CDP側での設定は完了です!
・AWS側の設定
では、次にAWS側での設定をしていきます!
AWS側では、IAMロールの作成・設定をしていきます。

AWSコンソールからIAM、そしてロールへと移動し、「ロールの作成」を選択します。

まず、信頼ポリシーを設定していきます。
ここでは、誰がこのIAMロールを引き受けることができるか(assume_roleできる人)を定義することができます。
信頼されたエンティティタイプで「AWSアカウント」を選択します。
そうすると、下にAWSアカウントについての情報が求められるフォームが出てきます。

「別のAWSアカウント」にチェックを入れ、Treasure Data CDPのAccount IDを入力します。
次に、オプションの「外部IDを要求する」にチェックを入れ、Treasure Data CDPの設定画面にあったExternal IDを入力します。
これらを入力することで、先ほどTreasure Data CDP側で作成したAuthenticationに対し、assume_roleの権限が設定されます。
そして、右下の「次へ」を押下します。

次に、許可ポリシーを設定していきます。
ここではどのAWSのサービスに対して作成するIAMロールがどんな操作をできるのか、ポリシーを付与することができます。
なおTreasure DataからAmazon S3にアクセスするのに必要な権限は以下となります。
Amazon S3からのインプットに必要な権限:
・s3:GetObject
・s3:ListBucket
Amazon S3へのアウトプットに必要な権限:
・s3:PutObject
・s3:AbortMultipartUpload
今回は上記4つの権限を含めたポリシーを既に※「S3_Policy」として作成していますので、そちらを付与しています。
付与出来たら、右下の「次へ」を押下します。
※ポリシーの作成はIAM>ポリシー>ポリシーの作成>サービスの選択で「S3」を選択>上記4つの権限にチェックを入れることで簡単に作成できます。

最後に、このIAMロールに名前を付けます。
名前は、Treasure Data CDP側で設定した名前「assume_role_test」を入力します。
ここまで出来たら、右下の「ロールを作成」を押下すれば完成です。
以上でAmazon S3側の設定が完了しました!
上記で作成したAutenticationを使用すると、AssumeRoleでの認証が可能になります!
4.まとめ
以上、「AssumeRoleを使ってTreasure Data CDPとAmazon S3を連携してみた!(前編)」のテーマでお送りいたしました。
AssumeRoleでの認証と聞くと、設定が難しそうに思るかもしれませんが、非常に簡単に設定することが可能です。
是非、皆さんも試してみてください!!
次回後編では、実際にAssumeRoleでの認証を使ってAmazon S3からデータTreasure Data CDPの中に取り込んだり、Amazon S3に出力してみたいと思います。お楽しみに~
Treasure Data CDPにご興味を持たれた方はぜひ「こちら」からお問い合わせください
その他、Treasure Data CDP についての記事はこちら↓
セグメント作成について↓↓
Treasure Data CDP <第1弾>Audience Studio の機能でセグメント作成してみた!!
Activationについて↓↓
Treasure Data CDP <第2弾>Audience Studio の機能 Activation を使ってみた!
Predictive Scoring について↓↓
Treasure Data CDP <第3弾>Predictive Scoring のご紹介
データのインポートについて↓↓
Treasure Data CDP <第4弾>Treasure Data にデータをインポートしてみた
SQLを使ったデータの抽出方法について↓↓
Treasure Data CDP<第5弾>SQL を使ってデータ抽出してみた!
Treasure Workflowについて(前編)↓↓
Treasure Data CDP<第6弾>Treasure Workflow とは(前編)
Treasure Workflowについて(後編)↓↓
Treasure Data CDP<第7弾>Treasure Workflow とは(後編)
新機能 ジャーニーオーケストレーションについて↓↓
Treasure Data CDP<第8弾>新機能 ジャーニーオーケストレーション ご紹介
Server Side 1st Party Cookieについて↓↓
Treasure Data CDP<第9弾>Server Side 1st Party Cookieのご紹介
ジャーニーオーケストレーションの機能を使ったジャーニーの作成方法について↓↓
Treasure Data CDP<第10弾>【Journey Ohchestration】ジャーニーを作成してみよう!
Predictive Scoring 予測モデルの作成から実行について↓↓
Treasure Data CDP<第11弾>Predictive Scoringを使ってみた!
Policy Based Permissionについて↓↓
Treasure Data CDP<第12弾>Policy Based Permissionとは?
Treasure Insights について↓↓
Treasure Data CDP<第13弾>Treasure Insights について ご紹介
ID Unificationについて↓↓
Treasure Data CDP<第14弾>ID Unification 機能 ご紹介
アップデートされたAudience Studioについて↓↓
Treasure Data CDP<第15弾>アップデートされたAudience Studioのご紹介!
Utilizationについて↓↓
Treasure Data CDP<第16弾>Utilizationについてご紹介
TD AutoMLについて↓↓
Treasure Data CDP<第17弾>TD AutoMLを動かしてみた!
Policy based Column-level Access Controlについて↓↓
Treasure Data CDP<第18弾>セキュリティ強化機能~カラムレベルでデータを管理してみた!~
Treasure Dataの日時を扱う独自関数について↓↓
Treasure Data CDP<第20弾>Treasure Dataの日時を扱う独自関数をご紹介!
銀行業界でのユースケースについて↓↓
Treasure Data CDP<第21弾>Treasure Dataによる銀行業界でのユースケース【動画】
Googleスプレッドシートとの連携について(前編)↓↓
Treasure Data CDP<第22弾>Treasure Data CDPとGoogle スプレッドシートを連携してみた!(前編)
ジャーニーオーケストレーションのシナリオについて↓↓
Treasure Data CDP<第23弾>ジャーニーオーケストレーションのシナリオをご紹介!
Googleスプレッドシートとの連携について(後編)↓↓
Treasure Data CDP<第24弾>Treasure Data CDPとGoogle スプレッドシートを連携してみた!(後編)