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

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. [ ワークスペースに割り当てる ] をクリックし、割り当てるワークスペースを入力または検索します。

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