そのほか
2024/11/29
與田 龍人

Unity CatalogでAWS S3を外部ストレージとして設定する方法

データのセキュリティと管理を統合的に行うことが求められる中、DatabricksのUnity Catalogは、データガバナンスを強化するための最適なソリューションです。特に、AWSのS3をUnity Catalogの外部ストレージとして活用することで、柔軟性とセキュリティを両立したデータ管理基盤を構築できます。本記事では、AWS S3をUnity Catalogと連携させる具体的な手順を詳しく解説します。

はじめに

データのセキュリティと管理を統合的に行うことが求められる中、DatabricksのUnity Catalogは、データガバナンスを強化するための最適なソリューションです。特に、AWSのS3をUnity Catalogの外部ストレージとして活用することで、柔軟性とセキュリティを両立したデータ管理基盤を構築できます。


本記事では、AWS S3をUnity Catalogと連携させる具体的な手順を詳しく解説します。


前提条件

以下の前提条件を満たしている必要があります。



  • Databricksアカウント: Unity Catalogが利用可能な環境。

  • AWSアカウント: IAMロールやポリシーを作成する権限があること。

  • 基本的なAWSの操作知識: IAMやS3の管理画面の操作に慣れていること。


手順概要


  1. DatabricksアカウントIDとAWSアカウントIDを取得する。

  2. IAMロールを作成し、Databricksコントロールプレーンがアクセス可能な設定を行う。

  3. Unity Catalogのルートストレージとして利用するS3バケットを作成する。

  4. IAMポリシーを設定し、IAMロールにアタッチする。

  5. Databricks Unity CatalogでS3をルートストレージとして設定する。


ステップ1: DatabricksアカウントIDとAWSアカウントIDの取得


DatabricksアカウントIDの取得方法


DatabricksアカウントIDは、IAMロールの信頼ポリシー設定で必要です。以下の手順で確認してください。



  1. Databricksアカウントコンソールにログインします。

  2. 左サイドバーから「アカウントコンソール」を選択します。

  3. アカウントID(例: 1234-567890-abcd1234)が表示されます。この値をコピーして控えておきます。


AWSアカウントIDの取得方法


AWSアカウントIDはIAMポリシー設定で必要です。以下の手順で確認できます。



  1. AWSマネジメントコンソールにログインします。

  2. 画面右上のアカウント名をクリックし、「アカウント情報」を選択します。

  3. アカウントID」が表示されます(例: 123456789012)。この値をコピーして控えておきます。


ステップ2: IAMロールの作成

DatabricksがS3にアクセスできるようにするためのIAMロールを作成します。


1.AWSマネジメントコンソールで「IAM」にアクセスします。


2.左メニューから「ロール」を選択し、「ロールを作成」をクリックします。


3.信頼されたエンティティタイプを「AWSのサービス」、ユースケースを「EC2」に設定し、「次へ」をクリックします。



4.「次へ」を数回クリックし、ロール名を入力して「ロールを作成」をクリックします。


信頼ポリシーの編集


1.作成したIAMロールを検索してクリックします。


2.「信頼関係」タブを開き、「信頼ポリシーを編集」をクリックします。


3.以下のポリシーを貼り付けます。



{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
"arn:aws:iam::<AWSアカウントID>:role/<作成したIAMロール>"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<DatabricksアカウントID>"
}
}
}
]
}


値の置き換え



  • <DatabricksアカウントID>: 前ステップで取得したDatabricksアカウントID。

  • <AWSアカウントID>: AWSアカウントID。

  • <作成したIAMロール>: このステップで作成したロール名。




ステップ3: S3バケットの作成


Unity Catalogのルートストレージとして使用するS3バケットを作成します。


1.AWSマネジメントコンソールで「S3」を開き、「バケットの作成」をクリックします。


2.バケット名を入力(例: my-databricks-bucket)。ピリオド(.)を含めないようにします。


3.「バケットの作成」をクリックし、作成を完了します。


4.作成したバケット名を控えておきます。


 


ステップ4: IAMポリシーの作成

IAMロールがS3バケットにアクセスできるようにするポリシーを作成します。


1.AWSコンソールの「IAM」で「ポリシー」を選択し、「ポリシーを作成」をクリックします。


2.JSONタブを開き、以下を貼り付けます。



{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:GetLifecycleConfiguration",
"s3:PutLifecycleConfiguration"
],
"Resource": [
"arn:aws:s3:::<作成したS3バケット>/*",
"arn:aws:s3:::<作成したS3バケット>"
],
"Effect": "Allow"
},
{
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::<AWSアカウントID>:role/<作成したIAMロール>"
],
"Effect": "Allow"
}
]
}


値の置き換え



  • <作成したS3バケット>: 作成したS3バケット名。

  • <AWSアカウントID>: AWSアカウントID。

  • <作成したIAMロール>: IAMロール名。



  1. ポリシー名を入力して「ポリシーの作成」をクリックします。

  2. 作成したポリシーをIAMロールにアタッチします。



ステップ5: Databricks Unity Catalogでの設定

1.Databricksワークスペースにログインします。


2.左サイドバーの「カタログ」から「外部ロケーションを追加」を開きます。



3.S3バケットとIAMロールのARNを設定し、Unity Catalogのルートストレージとして登録します。



 


結論

この記事では、AWS S3をDatabricks Unity Catalogの外部ストレージとして設定する手順を解説しました。この設定を行うことで、セキュリティとスケーラビリティを兼ね備えたデータ管理基盤を構築できます。Databricksを使用したデータガバナンスを強化したい方は、ぜひ参考にしてみてください!

New call-to-action