Google Cloud Storage バケットに接続する
GCP にデプロイされた SAP Databricks アカウントのみが Google Cloud Storage に接続できます。
このページでは、Google Cloud Storage (GCS) バケットを SAP Databricks アカウントに接続する方法について説明します。
SAP Databricks の外部クラウド ストレージに接続するには、次のものが必要です。
-
ストレージ資格情報 : クラウドテナントに保存されているデータ(GCSバケットのサービスアカウントなど)にアクセスするための認証および承認メカニズムを表します。管理者は、資格情報を使用して外部ロケーションを定義できるユーザーとグループを制御する権限を割り当てることができます。 これは、外部ロケーションオブジェクトを作成する必要があるユーザにのみ付与する必要があります。
-
外部ロケーション : クラウドストレージパスとストレージ資格情報のこの組み合わせにより、クラウドストレージパスへのアクセスが許可されます。 外部ロケーションに付与される権限は、外部ロケーションによって定義されたクラウドストレージパスにアクセスできるユーザーを制御します。
データの損失を防ぐために、SAP Databricks では、外部ロケーションを読み取り専用にする必要があります。
始める前に
前提条件 :
- SAP Databricks で外部ロケーションオブジェクトを作成する前に、外部ロケーションで参照する Google Cloud Storage バケットが存在する必要があります。エグレス料金を回避するには、バケットは、データにアクセスするワークスペースと同じリージョンにある必要があります。
- そのバケットのアクセス・ポリシーを変更する権限が必要です。
Databricks のアクセス許可の要件 :
CREATE STORAGE CREDENTIAL
ワークスペースにアタッチされたメタストアに対する特権。アカウント admins と metastore admins は、デフォルトによってこの権限を持ちます。CREATE EXTERNAL LOCATION
外部ロケーションで参照されるメタストアとストレージ資格情報の両方に対する権限。 メタストア管理者は、メタストアをデフォルトでCREATE EXTERNAL LOCATION
しています。
ストレージ資格情報を作成する
ストレージ資格情報を作成するには、SAP Databricks Catalog Explorer を使用して Google クラウドサービスアカウントを生成します。
-
Unity Catalog 対応 SAP Databricks ワークスペースに、メタストアに対する
CREATE STORAGE CREDENTIAL
特権を持つユーザーとしてログインします。 -
サイドバーで、「
カタログ 」をクリックします。
-
[ クイック アクセス ] ページで、[ 外部データ> ] ボタンをクリックし、[ 資格情報] タブに移動して、[ 資格情報の作成 ] を選択します。
-
GCP サービス アカウント の 資格情報タイプ を選択します。
-
ストレージ資格情報名 とオプションのコメントを入力してください。
-
[ 読み取り専用 ] を選択すると、このストレージ資格情報を使用する外部ロケーションが読み取り専用になります。
-
作成 をクリックします。
SAP Databricks はストレージ資格情報を作成し、Google クラウドサービス アカウントを生成します。
-
[ ストレージ資格情報が作成されました ] ダイアログで、サービスアカウントID (Eメールアドレスの形式) をメモし、[ 完了 ]をクリックします。
-
(オプション)ストレージ資格情報を特定のワークスペースにバインドします。
デフォルトでは、すべての特権ユーザーは、メタストアに接続されている任意のワークスペースでストレージ資格情報を使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動し、ワークスペースを割り当てます。 「(オプション) 特定のワークスペースに外部ロケーションを割り当てる」を参照してください。
サービス アカウントのアクセス許可を構成する
-
Google クラウドコンソールに移動し、SAP Databricks ワークスペースからアクセスするGCSバケットを開きます。
エグレス料金を回避するには、バケットは、データにアクセスするワークスペースと同じリージョンにある必要があります。
-
[ 権限] タブで [+ アクセス権の付与] をクリックし、新しく作成したサービス アカウントに次のロールを割り当てます。
- ストレージレガシーバケットリーダー
- ストレージオブジェクト管理者
サービスアカウントのEメールアドレスを主識別子として使用します。
(推奨)ファイルイベントのアクセス許可を構成する
このステップはオプションですが、強くお勧めします。 ユーザーに代わってファイル イベントを構成するための SAP Databricks アクセス権を付与しない場合は、場所ごとにファイル イベントを手動で構成する必要があります。そうしないと、Databricks が将来リリースする可能性のある重要な機能へのアクセスが制限されます。
以下の手順により、 Databricks は完全な通知パイプラインを設定して、 GCS バケットから Google クラウド Pub/Sub にイベント通知メッセージを公開できます。 GCS バケットを持つ GCP プロジェクトがあり、Pub/Sub API を有効にしていることを前提としています。
-
ファイルイベントのカスタムIAMロールを作成します。
-
GCS バケットを含むプロジェクトの Google クラウドコンソールで、[ IAM & Admin > Roles ] に移動します。
-
カスタムIAMロールが既にある場合は、それを選択して 「ロールの編集」 をクリックします。それ以外の場合は、[ ロール ] ページから [+ ロールの作成] をクリックして、新しいロールを作成します。
-
[ ロールの作成] または [ロールの編集 ] 画面で、カスタム ロールに次の権限を追加 IAM、変更を保存します。 詳細な手順については、 GCP のドキュメントを参照してください。
pubsub.subscriptions.consume
pubsub.subscriptions.create
pubsub.subscriptions.delete
pubsub.subscriptions.get
pubsub.subscriptions.list
pubsub.subscriptions.update
pubsub.topics.attachSubscription
pubsub.topics.create
pubsub.topics.delete
pubsub.topics.get
pubsub.topics.list
pubsub.topics.update
storage.buckets.update
-
-
ロールへのアクセス権を付与します。
- IAM>IAMの「IAM&管理 」に移動します。
- [ アクセス権を付与 ] をクリックします。
- サービス アカウントをプリンシパルとして入力します。
- カスタムIAMロールを選択します。
- 保存 をクリックします。
-
クラウドStorage サービスエージェントに権限を付与する
- サービスエージェントアカウントEメールは、 Google クラウドのドキュメントで次の手順に従って検索します。
- Google クラウドコンソールで、[ IAM & 管理者] > IAM > [アクセス権の付与 ] に移動します。
- サービス エージェント アカウント Eメールと入力し、 Pub/Sub Publisher* ロールを割り当てます。
これで、このストレージ資格情報を参照する外部ロケーションを作成できます。
外部ロケーションの作成
外部ロケーションを作成するには:
-
メタストアにアタッチされているワークスペースにログインします。
-
サイドバーで、「
カタログ 」をクリックします。
-
[クイック アクセス ] ページで、[ 外部データ > ] ボタンをクリックし、[ 外部ロケーション ] タブに移動して、[ 場所の作成 ] をクリックします。
-
[ 外部ロケーション名 ] を入力します。
-
[URL ] で、外部ロケーションへのパスを入力または選択します。たとえば、
gs://mybucket/<path>
です。 -
外部ロケーションへのアクセスを許可するストレージ資格情報を選択します。
ストレージ資格情報がない場合は、次のように作成できます。
- [ ストレージ資格情報 ] ドロップダウン リストで、[ + 新しいストレージ資格情報の作成 ] を選択します。
- [ 資格情報の種類] ドロップダウン リストで、[GCP サービス アカウント] を選択します。
- GCP サービス アカウントは、外部ロケーションを保存すると自動的に作成されます。
-
外部ロケーションに読み取り専用アクセス権があることを確認します。 [詳細オプション ] をクリックし、[ 読み取り専用 ] が選択されていることを確認します。
-
(オプション)外部ロケーションで変更通知をサブスクライブする機能を有効にするには、[ 詳細オプション] をクリックし、[ ファイル イベントを有効にする] を選択します。
-
作成 をクリックします。
-
(オプション)外部ロケーションを特定のワークスペースにバインドします。
デフォルトでは、すべての特権ユーザーは、メタストアに接続されている任意のワークスペースで外部ロケーションを使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動し、ワークスペースを割り当てます。 外部 ロケーションを 1 つ以上のワークスペースにバインドするを参照してください。
-
[ 権限] タブに移動して、外部ロケーションを使用する権限を付与します。
外部ロケーションを使用するには、次の権限を付与する必要があります。
-
外部ロケーションを使用して、メタストア、カタログ、またはスキーマにマネージドストレージロケーションを追加するには、
CREATE MANAGED LOCATION
特権を付与します。 -
外部テーブルまたはボリュームを作成するには、
CREATE EXTERNAL TABLE
またはCREATE EXTERNAL VOLUME
を付与します。
- 付与 をクリックします。
- 「
<external location>
に付与 」ダイアログで、[ プリンシパル ]フィールドでユーザー、グループ、またはサービスプリンシパルを選択し、付与する権限を選択します。 - 付与 をクリックします。
-
(オプション)特定のワークスペースへの外部ロケーションの割り当て
デフォルトでは、 外部ロケーション メタストア内のすべてのワークスペースからアクセスできます。 つまり、ユーザーにその外部ロケーションに対する権限 ( READ FILES
など) が付与されている場合、メタストアに接続されている任意のワークスペースからその権限を行使できます。 ワークスペースを使用してユーザー データ アクセスを分離する場合は、特定のワークスペースからのみ外部ロケーションへのアクセスを許可することができます。この機能は、ワークスペース バインディングまたは外部ロケーション分離と呼ばれます。
外部ロケーションを特定のワークスペースにバインドする一般的なユースケースは次のとおりです。
- 本番運用データを含む外部ロケーションに対する
CREATE EXTERNAL TABLE
権限を持つデータエンジニアが、本番運用 ワークスペースでのみそのロケーションに外部テーブルを作成できるようにします。 - 機密データを含む外部ロケーションに対する
READ FILES
権限を持つデータエンジニアが、特定のワークスペースのみを使用してそのデータにアクセスできるようにする。
ワークスペース バインディングは、外部ロケーションに対する権限が行使された時点で参照されます。たとえば、ユーザーが myWorkspace
ワークスペースからステートメント CREATE TABLE myCat.mySch.myTable LOCATION 'gs://mybucket/<path>'
を発行して外部テーブルを作成すると、通常のユーザー権限チェックに加えて、次のワークスペース バインディング チェックが実行されます。
- 外部ロケーションを覆う
'gs://mybucket/<path>'``myWorkspace
に縛られていますか? - カタログ
myCat
は、アクセスレベルRead & Write
のmyWorkspace
にバインドされていますか?
その後、外部ロケーションが myWorkspace
からバインド解除された場合、外部テーブルは引き続き機能します。
また、この機能を使用すると、中央ワークスペースからカタログにデータを入力し、他のワークスペースで外部ロケーションを使用可能にすることなく、カタログ バインディングを使用して他のワークスペースで使用できるようにすることもできます。
外部ロケーションを 1 つ以上のワークスペースにバインドする
外部ロケーションを特定のワークスペースに割り当てるには、カタログエクスプローラを使用します。
必要な権限 : メタストア管理者、外部ロケーション所有者、または外部ロケーションの MANAGE
。
メタストア管理者は、カタログ エクスプローラーを使用してメタストア内のすべての外部ロケーションを表示でき、外部ロケーションの所有者は、外部ロケーションが現在のワークスペースに割り当てられているかどうかに関係なく、メタストアで所有するすべての外部ロケーションを表示できます。 ワークスペースに割り当てられていない外部ロケーションはグレー表示されます。
-
メタストアにリンクされているワークスペースにログインします。
-
サイドバーで、「
カタログ 」をクリックします。
-
クイック アクセス ページで、 外部データ > ボタンをクリックして外部 ロケーション タブに移動します。
-
外部ロケーションを選択し、 ワークスペース タブに移動します。
-
[ ワークスペース ] タブで、[ すべてのワークスペースがアクセス可能] チェックボックスをオフにします。
外部ロケーションがすでに 1 つ以上のワークスペースにバインドされている場合、このチェックボックスはすでにオフになっています。
-
[ ワークスペースに割り当てる ] をクリックし、割り当てるワークスペースを入力または検索します。
アクセス権を取り消すには、[ ワークスペース ] タブに移動し、ワークスペースを選択して、[ 取り消し ] をクリックします。すべてのワークスペースからのアクセスを許可するには、[ すべてのワークスペースがアクセス可能 ] チェックボックスをオンにします。