メインコンテンツまでスキップ

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 クラウドサービスアカウントを生成します。

  1. Unity Catalog 対応 SAP Databricks ワークスペースに、メタストアに対する CREATE STORAGE CREDENTIAL 特権を持つユーザーとしてログインします。

  2. サイドバーで、「データアイ�コン。 カタログ 」をクリックします。

  3. [ クイック アクセス ] ページで、[ 外部データ> ] ボタンをクリックし、[ 資格情報] タブに移動して、[ 資格情報の作成 ] を選択します。

  4. GCP サービス アカウント資格情報タイプ を選択します。

  5. ストレージ資格情報名 とオプションのコメントを入力してください。

  6. [ 読み取り専用 ] を選択すると、このストレージ資格情報を使用する外部ロケーションが読み取り専用になります。

  7. 作成 をクリックします。

    SAP Databricks はストレージ資格情報を作成し、Google クラウドサービス アカウントを生成します。

  8. [ ストレージ資格情報が作成されました ] ダイアログで、サービスアカウントID (Eメールアドレスの形式) をメモし、[ 完了 ]をクリックします。

  9. (オプション)ストレージ資格情報を特定のワークスペースにバインドします。

    デフォルトでは、すべての特権ユーザーは、メタストアに接続されている任意のワークスペースでストレージ資格情報を使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動し、ワークスペースを割り当てます。 「(オプション) 特定のワークスペースに外部ロケーションを割り当てる」を参照してください。

サービス アカウントのアクセス許可を構成する

  1. Google クラウドコンソールに移動し、SAP Databricks ワークスペースからアクセスするGCSバケットを開きます。

    エグレス料金を回避するには、バケットは、データにアクセスするワークスペースと同じリージョンにある必要があります。

  2. [ 権限] タブで [+ アクセス権の付与] をクリックし、新しく作成したサービス アカウントに次のロールを割り当てます。

    • ストレージレガシーバケットリーダー
    • ストレージオブジェクト管理者

    サービスアカウントのEメールアドレスを主識別子として使用します。

(推奨)ファイルイベントのアクセス許可を構成する

注記

このステップはオプションですが、強くお勧めします。 ユーザーに代わってファイル イベントを構成するための SAP Databricks アクセス権を付与しない場合は、場所ごとにファイル イベントを手動で構成する必要があります。そうしないと、Databricks が将来リリースする可能性のある重要な機能へのアクセスが制限されます。

以下の手順により、 Databricks は完全な通知パイプラインを設定して、 GCS バケットから Google クラウド Pub/Sub にイベント通知メッセージを公開できます。 GCS バケットを持つ GCP プロジェクトがあり、Pub/Sub API を有効にしていることを前提としています。

  1. ファイルイベントのカスタムIAMロールを作成します。

    1. GCS バケットを含むプロジェクトの Google クラウドコンソールで、[ IAM & Admin > Roles ] に移動します。

    2. カスタムIAMロールが既にある場合は、それを選択して 「ロールの編集」 をクリックします。それ以外の場合は、[ ロール ] ページから [+ ロールの作成] をクリックして、新しいロールを作成します。

    3. [ ロールの作成] または [ロールの編集 ] 画面で、カスタム ロールに次の権限を追加 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
  2. ロールへのアクセス権を付与します。

    1. IAM>IAMの「IAM&管理 」に移動します。
    2. [ アクセス権を付与 ] をクリックします。
    3. サービス アカウントをプリンシパルとして入力します。
    4. カスタムIAMロールを選択します。
    5. 保存 をクリックします。
  3. クラウドStorage サービスエージェントに権限を付与する

    1. サービスエージェントアカウントEメールは、 Google クラウドのドキュメントで次の手順に従って検索します。
    2. Google クラウドコンソールで、[ IAM & 管理者] > IAM > [アクセス権の付与 ] に移動します。
    3. サービス エージェント アカウント Eメールと入力し、 Pub/Sub Publisher* ロールを割り当てます。

これで、このストレージ資格情報を参照する外部ロケーションを作成できます。

外部ロケーションの作成

外部ロケーションを作成するには:

  1. メタストアにアタッチされているワークスペースにログインします。

  2. サイドバーで、「データアイコン。 カタログ 」をクリックします。

  3. [クイック アクセス ] ページで、[ 外部データ > ] ボタンをクリックし、[ 外部ロケーション ] タブに移動して、[ 場所の作成 ] をクリックします。

  4. [ 外部ロケーション名 ] を入力します。

  5. [URL ] で、外部ロケーションへのパスを入力または選択します。たとえば、 gs://mybucket/<path>です。

  6. 外部ロケーションへのアクセスを許可するストレージ資格情報を選択します。

    ストレージ資格情報がない場合は、次のように作成できます。

    1. [ ストレージ資格情報 ] ドロップダウン リストで、[ + 新しいストレージ資格情報の作成 ] を選択します。
    2. [ 資格情報の種類] ドロップダウン リストで、[GCP サービス アカウント] を選択します。
    3. GCP サービス アカウントは、外部ロケーションを保存すると自動的に作成されます。
  7. 外部ロケーションに読み取り専用アクセス権があることを確認します。 [詳細オプション ] をクリックし、[ 読み取り専用 ] が選択されていることを確認します。

  8. (オプション)外部ロケーションで変更通知をサブスクライブする機能を有効にするには、[ 詳細オプション] をクリックし、[ ファイル イベントを有効にする] を選択します。

  9. 作成 をクリックします。

  10. (オプション)外部ロケーションを特定のワークスペースにバインドします。

    デフォルトでは、すべての特権ユーザーは、メタストアに接続されている任意のワークスペースで外部ロケーションを使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動し、ワークスペースを割り当てます。 外部 ロケーションを 1 つ以上のワークスペースにバインドするを参照してください。

  11. [ 権限] タブに移動して、外部ロケーションを使用する権限を付与します。

    外部ロケーションを使用するには、次の権限を付与する必要があります。

    • 外部ロケーションを使用して、メタストア、カタログ、またはスキーマにマネージドストレージロケーションを追加するには、 CREATE MANAGED LOCATION 特権を付与します。
    • 外部テーブルまたはボリュームを作成するには、 CREATE EXTERNAL TABLE または CREATE EXTERNAL VOLUMEを付与します。
    1. 付与 をクリックします。
    2. <external location>に付与 」ダイアログで、[ プリンシパル ]フィールドでユーザー、グループ、またはサービスプリンシパルを選択し、付与する権限を選択します。
    3. 付与 をクリックします。

(オプション)特定のワークスペースへの外部ロケーションの割り当て

デフォルトでは、 外部ロケーション メタストア内のすべてのワークスペースからアクセスできます。 つまり、ユーザーにその外部ロケーションに対する権限 ( READ FILESなど) が付与されている場合、メタストアに接続されている任意のワークスペースからその権限を行使できます。 ワークスペースを使用してユーザー データ アクセスを分離する場合は、特定のワークスペースからのみ外部ロケーションへのアクセスを許可することができます。この機能は、ワークスペース バインディングまたは外部ロケーション分離と呼ばれます。

外部ロケーションを特定のワークスペースにバインドする一般的なユースケースは次のとおりです。

  • 本番運用データを含む外部ロケーションに対する CREATE EXTERNAL TABLE 権限を持つデータエンジニアが、本番運用 ワークスペースでのみそのロケーションに外部テーブルを作成できるようにします。
  • 機密データを含む外部ロケーションに対する READ FILES 権限を持つデータエンジニアが、特定のワークスペースのみを使用してそのデータにアクセスできるようにする。
important

ワークスペース バインディングは、外部ロケーションに対する権限が行使された時点で参照されます。たとえば、ユーザーが myWorkspace ワークスペースからステートメント CREATE TABLE myCat.mySch.myTable LOCATION 'gs://mybucket/<path>' を発行して外部テーブルを作成すると、通常のユーザー権限チェックに加えて、次のワークスペース バインディング チェックが実行されます。

  • 外部ロケーションを覆う'gs://mybucket/<path>'``myWorkspaceに縛られていますか?
  • カタログmyCatは、アクセスレベルRead & WritemyWorkspaceにバインドされていますか?

その後、外部ロケーションが myWorkspaceからバインド解除された場合、外部テーブルは引き続き機能します。

また、この機能を使用すると、中央ワークスペースからカタログにデータを入力し、他のワークスペースで外部ロケーションを使用可能にすることなく、カタログ バインディングを使用して他のワークスペースで使用できるようにすることもできます。

外部ロケーションを 1 つ以上のワークスペースにバインドする

外部ロケーションを特定のワークスペースに割り当てるには、カタログエクスプローラを使用します。

必要な権限 : メタストア管理者、外部ロケーション所有者、または外部ロケーションの MANAGE

メタストア管理者は、カタログ エクスプローラーを使用してメタストア内のすべての外部ロケーションを表示でき、外部ロケーションの所有者は、外部ロケーションが現在のワークスペースに割り当てられているかどうかに関係なく、メタストアで所有するすべての外部ロケーションを表示できます。 ワークスペースに割り当てられていない外部ロケーションはグレー表示されます。

  1. メタストアにリンクされているワークスペースにログインします。

  2. サイドバーで、「データアイコン。 カタログ 」をクリックします。

  3. クイック アクセス ページで、 外部データ > ボタンをクリックして外部 ロケーション タブに移動します。

  4. 外部ロケーションを選択し、 ワークスペース タブに移動します。

  5. [ ワークスペース ] タブで、[ すべてのワークスペースがアクセス可能] チェックボックスをオフにします。

    外部ロケーションがすでに 1 つ以上のワークスペースにバインドされている場合、このチェックボックスはすでにオフになっています。

  6. [ ワークスペースに割り当てる ] をクリックし、割り当てるワークスペースを入力または検索します。

アクセス権を取り消すには、[ ワークスペース ] タブに移動し、ワークスペースを選択して、[ 取り消し ] をクリックします。すべてのワークスペースからのアクセスを許可するには、[ すべてのワークスペースがアクセス可能 ] チェックボックスをオンにします。