[Talend]tS3Connectionを利用してクライアントサイド暗号化をする

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tS3Connection」を利用したクライアントサイド暗号化をご紹介します。なお接続にはアクセスキー、シークレットキーを利用した基本的な接続を行っております。詳細についてはこちらの記事をご参照ください。

[Talend]tS3Connectionを利用してS3へ基本的な接続をする | DevelopersIO

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」で検証しています。

tS3Connectionについて

「tS3Connection」を利用すると「tS3XXXXX」というS3用の各コンポーネントにおけるコネクションを共通設定することができます。

「tS3Connection」コンポーネントのTalend Helpページはこちらです。

tS3Connection

では、具体的に以下で解説していきます。

ジョブの説明

「tS3Connection」で接続を行い、「tS3Put」でオブジェクトをPutしたら「tS3Close」で接続をクローズしています。

「カスタマー管理 CMK」の作成

今回はクライアントサイド暗号化をしたいので、まずはAWSの管理コンソールで「Key Management Service (KMS)」を開き、「カスタマー管理 CMK」を作成します。

「カスタマー管理型のキー」を選択し、「キーの作成」をクリックします。

任意の「エイリアス」の名前を指定して「Next」をクリックします。

必要に応じてタグを追加し、「Next」をクリックします。

キー管理者として、「IAMユーザー」または「IAMロール」を指定して「Next」をクリックします。

データ暗号化および復号する「IAMユーザー」または「IAMロール」を指定して「Next」をクリックします。ここでは、今回「tS3Connection」で利用する「IAMユーザー」を指定しておきます。

ポリシーを確認して「完了」をクリックします。

無事に作成できたら「リージョン」と「キーID」を控えておきます。(後で「tS3Connection」に設定します。)

「tS3Connection」コンポーネントの設定

「tS3Connection」コンポーネントでは、以下のように接続設定をしました。

アクセスキー、シークレットキー

AWSのマネージメントコンソールなどで作成した、IAMユーザのアクセスキー、シークレットキーを指定します。

リージョン

ここにはアクセスするS3バケットのリージョンを指定しておきます。クライアントサイド暗号化を行わない場合には、以下のようにJavaのコード上でwithForceGlobalBucketAccessEnabledが有効になるので問題にはならないのですが、クライアントサイド暗号化を行う際にはwithForceGlobalBucketAccessEnabled有効とならないので明示的に指定する必要があります。

com.amazonaws.services.s3.AmazonS3 conn_tS3Connection_1 = com.amazonaws.services.s3.AmazonS3ClientBuilder
		.standard()

		.withRegion("us-east-1")
		// The first region to try your request against
		.withForceGlobalBucketAccessEnabled(true)
		// If a bucket is in a different region, try again in
		// the correct region

暗号化

「暗号化」を行う際に指定するオプションです。今回はクライアントサイド暗号化を行いたいので有効にします。

キータイプ

暗号化のキータイプとしてKMS管理顧客マスターキー対称マスターキー非対称マスターキーが選択できます。

それぞれ選択するとKMS管理顧客マスターキーでは「カスタマー管理 CMKのキーID」、対称マスターキーでは「公開鍵」、非対称マスターキーでは「公開鍵」と「秘密鍵」を指定することになります。

今回はKMS管理顧客マスターキーを選択します。

キー

「カスタマー管理 CMK」を作成した際の「キーID」(e3b30XXXXXXXXXXXXXXXXXXXXX)をここで指定します。

「tS3Put」コンポーネントの設定

「tS3Put」コンポーネントでは、以下のように接続設定をしました。今回はこちらのコンポーネントについて細かく記載しませんが、主な設定として「接続」には「既存の接続を使用」として、先程作成した「tS3Connection」を指定しています。

「tS3Close」コンポーネントの設定

「tS3Close」コンポーネントでは、以下のように接続設定をしました。こちらも「接続」には「既存の接続を使用」として、先程作成した「tS3Connection」を指定しています。

実行結果

今回の設定は以上です。実際にこのジョブを実行すると「tS3Put」で指定したバケットキーの場所にS3に暗号化されたファイルが配置されます。ファイルはS3へのPut前後で以下のようになっていました。

Hello World!
キ{'H・・Unロユ彧エ

まとめ

以上、「tS3Connection」を利用したクライアントサイド暗号化のご紹介でした。

引き続き他の各種設定についてご紹介できればと思います。それでは!