

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# へのフェデレーション Databricks Unity Catalog
<a name="catalog-federation-databricks"></a>

AWS Glue Data Catalog は、Databricksサービスプリンシパルの OAuth2 認証情報Databricksを使用して にフェデレーションします。この認証メカニズムにより AWS Glue Data Catalog 、 はサービスプリンシパルに関連付けられた権限に基づいて、 のさまざまなオブジェクト (カタログ、データベースDatabricks Unity Catalog、テーブルなど) のメタデータにアクセスできます。適切なオブジェクトへのアクセスを確保するには、これらのオブジェクトのメタデータを読み取るDatabricksために必要なアクセス許可を のサービスプリンシパルに付与することが重要です。

次に、カタログフェデレーションにより、Databricks Unity Catalog 内のIcebergテーブルの検出とクエリが可能になります。デルタテーブルを読み取るには、 を使用してこれらのテーブルでIcebergメタデータが使用可能であることを確認してくださいUniform。Databricks チュートリアルとドキュメントに従って、Databricksワークスペースにサービスプリンシパルと関連する権限を作成します。

## 前提条件
<a name="catalog-federation-databricks-prerequisites"></a>

Lake Formation によって管理されるフェデレーティッドカタログを Data Catalog で作成する前に、次のアクセス許可があることを確認してください。

IAM プリンシパル (ユーザーまたはロール) には、次のアクセス許可が必要です。
+ **Lake Formation のアクセス許可** – `lakeformation:RegisterResource`、 `lakeformation:DescribeResource`
+ アクセス**AWS Glue 許可** – `glue:CreateConnection`、`glue:CreateCatalog`、`glue:GetConnection`、 `glue:PassConnection`
+ **Secrets Manager のアクセス許可** – `secretsmanager:CreateSecret`、 `secretsmanager:GetSecretValue`
+ **IAM アクセス許可** – `iam:CreateRole`、`iam:AttachRolePolicy`、 `iam:PassRole`

Lake Formation データレイク管理者であるか、データカタログに対する`CREATE_CATALOG`アクセス許可を持っている必要があります

## フェデレーティッドカタログの作成
<a name="catalog-federation-databricks-create"></a>

### コンソールの使用
<a name="catalog-federation-databricks-console"></a>

1. コンソールにサインインし、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

1. 右上のページセクションで任意の AWS リージョンを選択します。

1. 左側のナビゲーションペインで、[カタログ] を選択します。

1. **Create Catalog** を選択して、**Create Catalog ワークフロー**を開きます。

1. **データソースの選択**ステップで、使用可能なオプションDatabricksから を選択します。

1. **カタログの詳細を設定する**ステップでは、カタログの詳細、接続の詳細、登録の詳細の 3 つの情報を指定します。

1. **カタログ詳細**コンテナで、フェ AWS Glue デレーティッドカタログに一意の名前を指定し、既存のDatabricksカタログの名前を入力します。

1. **接続の詳細**コンテナでは、アクセスできる既存の接続から選択するか、新しいコネクタを作成するための設定を指定できます。

1. 新しい接続設定は次のとおりです。
   + 接続名 – AWS Glue 接続オブジェクトの一意の名前。
   + Workspace URL – 既存のDatabricksワークスペースのエンドポイント URL。
   + 認証 – がリモートカタログサーバーへの接続 AWS Glue に使用する認証設定を指定します。 は OAuth2 認証とカスタム認証の両方 AWS Glue をサポートします。
   + トークン URL – リモートカタログの ID プロバイダーの URL を指定します。
   + OAuth2 クライアント ID – リモートカタログに関連付けられた OAuth2 認証情報のクライアント ID を指定します。
   + シークレット – を使用して OAuth2 クライアントシークレットを保存して使用する AWS Secrets Manager か、テキストボックスにシークレット値を入力します。コンソールでシークレットを手動で入力すると、 はユーザーに代わってシークレット AWS Glue を作成します。
   + トークン URL スコープ – 認証の OAuth スコープを指定します。

1.  AWS Glue および Lake Formation サービスプリンシパルがそれぞれリモートIcebergテーブルの および Amazon S3 ロケーションのシークレットにアクセスするために使用できる IAM ロールを作成します。登録ドロップダウンで IAM ロールを選択します。IAM ポリシーの詳細については、次の CLI セクションのステップ 2 と 3 を参照してください。

1. 接続のテストを選択して、接続プロパティと IAM ロールアクセスが正しく設定されているかどうかをテストします。Amazon VPC Databricksを使用して に接続する場合、テスト接続機能は利用できません。

1. 次**へ** を選択して設定を確認します。

1. レビューページで**カタログの作成**を選択します。

### CLI を使用する
<a name="catalog-federation-databricks-cli"></a>

1. <a name="databricks-step-1"></a>** AWS Secrets Manager シークレットを作成する**

    AWS Glue コネクタは、**OAuth2** と Custom の 2 つの認証タイプをサポートしています。 ****OAuth2 オプションを使用する場合は、 AWS Secrets Manager を使用してDatabricksサービスプリンシパルのクライアントシークレットを保存します。このシークレットは、後で AWS Glue 接続を作成するときに使用します。カスタム認証では、 AWS Secrets Manager を使用してアクセストークンを保存および取得します。

   次の例では、`{{<databricks-secret>}}`、 `{{<client_secret>}}``{{<region>}}`を独自の情報に置き換えます。

   ```
   aws secretsmanager create-secret \
   --name {{<databricks-secret>}} \
   --description "Databricks secret" \
   --secret-string '{
   "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "{{<client_secret>}}"
   }' \
   --region {{<region>}}
   ```
**注記**  
`USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` は、 AWS Glue を使用してシークレット内のクライアントシークレット値を参照する予約キーワードです。Lake Formation コンソールでシークレットを作成するときにも、同じキーワードを使用します。

1. <a name="databricks-step-2"></a>**前のステップで作成したシークレットへのアクセスを AWS Glue 接続オブジェクトに許可する IAM ロールを作成する**

    AWS Glue 接続オブジェクトでは、 AWS Secrets Manager を使用して OAuth AWS Secrets Manager シークレットトークンを保存、取得、更新するときに、シークレットにアクセスする必要があります。 AWS Glue 接続オブジェクトには、Amazon VPC エンドポイントを使用してDatabricksワークスペースへの接続を制限するときに、Amazon VPC ネットワークインターフェイスを作成、説明、使用するためのアクセスも必要です。

   IAM ポリシーを作成し、IAM ロールにアタッチします。 AWS Glue サービスプリンシパルを信頼ポリシーに追加します。

   次の例では、`{{<your-secrets-manager-ARN>}}`、、 `{{<your-vpc-id>}}``{{<your-subnet-id1>}}`を独自の情報に置き換えます。  
**Example IAM ポリシー**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
               "Effect": "Allow",
               "Action": [
                   "secretsmanager:GetSecretValue",
                   "secretsmanager:DescribeSecret",
                   "secretsmanager:PutSecretValue"
               ],
               "Resource": [
                   "{{<your-secrets-manager-ARN>}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:CreateNetworkInterface",
                   "ec2:DeleteNetworkInterface",
                   "ec2:DescribeNetworkInterfaces"
               ],
               "Resource": "*",
               "Condition": {
                   "ArnEquals": {
                       "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/{{<your-vpc-id>}}",
                       "ec2:Subnet": ["arn:aws:ec2:region:account-id:subnet/{{<your-subnet-id1>}}"]
                   }
               }
           }
       ]
   }
   ```  
**Example 信頼ポリシー**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
           "Effect": "Allow",
           "Principal": {
               "Service": "glue.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
       }]
   }
   ```

1. <a name="databricks-step-3"></a>**Lake Formation にカタログの Amazon S3 ロケーションへの読み取りアクセスを許可する IAM ポリシーを作成する**

   Data Catalog のフェデレーティッドカタログのカタログ所有者は、Lake Formation を使用して、データチームへの粗粒度のテーブルアクセス、粒度の細かい列レベル、行レベル、セルレベルのアクセス、タグベースのアクセスを付与します。Lake Formation は、リモート Iceberg テーブルの基盤となる Amazon S3 ロケーションへのアクセスを許可する IAM ロールを使用します。このアクセスにより、Lake Formation はリモートテーブルをクエリする分析エンジンにスコープ付きアクセス認証情報を提供できます。

   IAM ポリシーを作成し、IAM ロールにアタッチします。Lake Formation サービスプリンシパルを IAM ロールの信頼ポリシーに追加します。

   以下の例では、`{{<your-s3-bucket-N>}}` と `{{<your-kms-key>}}` を独自の情報に置き換えます。  
**Example IAM ポリシー**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::{{<your-s3-bucket-1>}}/*",
                   "arn:aws:s3:::{{<your-s3-bucket-2>}}/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::{{<your-s3-bucket-1>}}",
                   "arn:aws:s3:::{{<your-s3-bucket-2>}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:Encrypt"
               ],
               "Resource": [
                   "{{<your-kms-key>}}"
               ]
           }
       ]
   }
   ```  
**Example 信頼ポリシー**  

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [{
           "Sid": "",
           "Effect": "Allow",
           "Principal": {
               "Service": "lakeformation.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
       }]
   }
   ```
**注記**  
Lake Formation コンソールを使用してフェデレーティッドカタログを作成する場合、コンソールは両方のポリシーがアタッチされた単一の IAM ロールを使用してセットアップを完了します。

1. <a name="databricks-step-4"></a>** AWS Glue 接続オブジェクトを作成する**

   Data Catalog は、Data Catalog を に接続`DATABRICKSICEBERGRESTCATALOG`するための connectionType: をサポートしていますDatabricks。この AWS Glue コネクタは、OAuth2 およびカスタム認証方法をサポートしています。

   次の例では、OAuth2 認証設定を使用して AWS Glue 接続を作成します。`{{highlighed sections}}` を自分の情報に置き換えます。

   ```
   aws glue create-connection \
       --connection-input '{
   "Name": "{{<your-glue-connection-to-databricks-unity-account>}}",
   "ConnectionType": "DATABRICKSICEBERGRESTCATALOG",
   "ConnectionProperties": {
       "INSTANCE_URL": "{{<your-databricks-workspace-catalog-URL>}}",
       "ROLE_ARN": "{{<your-IAM-role-for-secrets-and-VPC-access>}}"
   },
   "AuthenticationConfiguration": {
       "AuthenticationType": "OAUTH2",
       "OAuth2Properties": {
           "OAuth2GrantType": "CLIENT_CREDENTIALS",
           "TokenUrl": "{{<your-internal-or-external-token-server-url>}}",
           "OAuth2ClientApplication": {
               "UserManagedClientApplicationClientId": "{{<your-client-id>}}"
           },
           "TokenUrlParametersMap": {
               "scope": "all-apis"
           }
       },
       "SecretArn": "arn:aws:secretsmanager:{{<aws-region>}}:{{<your-aws-account-id>}}:secret:{{<databricks-secret>}}"
   }
   }'
   ```

1. <a name="databricks-step-5"></a>**Lake Formation リソースとして AWS Glue 接続を登録する**

    AWS Glue 接続オブジェクト (ステップ 4 で作成) と IAM ロール (ステップ 3 で作成) を使用して AWS Glue 、接続オブジェクトを Lake Formation マネージドリソースとして登録できるようになりました。

   `{{<your-glue-connector-arn>}}` と `{{<your-IAM-role-ARN-having-LF-access>}}` をあなたの情報に置き換えます。

   ```
   aws lakeformation register-resource \
       --resource-arn {{<your-glue-connector-arn>}} \
       --role-arn {{<your-IAM-role-ARN-having-LF-access>}} \
       --with-federation \
       --with-privileged-access
   ```

1. <a name="databricks-step-6"></a>**Data Catalog でフェデレーティッドカタログを作成する**

    AWS Glue 接続オブジェクトを作成して Lake Formation に登録したら、データカタログにフェデレーティッドカタログを作成できます。

   フェデレーティッドカタログに で一意の名前を付け`{{<your-federated-catalog-name>}}`、 Databricksで カタログを参照し`{{"<catalog-name-in-Databricks>}}`、 で前に作成した入力接続名を指定します`{{"<your-glue-connection-name>}}`。

   ```
   aws glue create-catalog \
       --name {{<your-federated-catalog-name>}} \
       --catalog-input '{
       "FederatedCatalog": {
           "Identifier": {{"<catalog-name-in-Databricks>}}",
           "ConnectionName": {{"<your-glue-connection-name>}}"
       },
       "CreateTableDefaultPermissions": [],
       "CreateDatabaseDefaultPermissions": []
   }'
   ```

## と統合する際の考慮事項 Databricks
<a name="databricks-considerations"></a>
+ でリソース (データベースやテーブルなど) を削除してもDatabricks、Lake Formation はそのフェデレーティッドリソースに付与されたアクセス許可を自動的に取り消しません。アクセス許可を削除するには、Lake Formation を使用してフェデレーティッドリソースで以前に付与されたアクセス許可を明示的に取り消す必要があります。
+ この統合を使用して、Amazon S3 に保存されている Iceberg テーブルをクエリできます。他のテーブル形式またはオブジェクトストレージを使用する場合、リモートカタログのメタデータを にフェデレーション AWS Glue してデータベースとテーブルを一覧表示できますが、 のようなクエリオペレーション`SELECT ColumnFoo from TableBar`はクエリ中に失敗し、Apache Iceberg「テーブルの読み取りに失敗しました」というエラーが発生します。オブジェクトストレージの場所はサポートされていません。
+ 同じ AWS Glue 接続を再利用して、複数のフェデレーティッドカタログを作成できます。カタログを削除しても、関連付けられた接続オブジェクトは削除されません。接続オブジェクトを削除するには、 AWS CLI `aws glue delete-connection` コマンドを使用して、関連するすべてのカタログが最初に削除されていることを確認してください。