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

Google Cloud Storage との連携

このページでは、Zilliz Cloud の GCP BYOC または BYOC-I データプレーンが外部の Google Cloud Storage バケットにアクセスできるように認可する方法について説明します。バケットスコープのカスタム IAM ロールを作成し、それをデータプレーンのストレージ Google サービスアカウント(GSA)に直接付与します。

Notes

Zilliz Cloud の統合ウィザードには、認可する Google Cloud サービスアカウントのメールアドレスが正確に表示されます。これが、選択したデータプレーンのストレージ GSA です。表示されたプリンシパルにバケットレベルのアクセス権を付与してください。有効期間の長いサービスアカウントキーを作成、ダウンロード、またはアップロードしないでください。

アクセスフロー​

T5GSwOpAnhKfNFbe5Zbc3t9Xneb

事前準備​

以下を満たしていることを確認してください。

  • GCP BYOC または BYOC-I データプレーンが稼働していること。

  • Zilliz Cloud プロジェクトに対する Organization Owner または Project Admin のアクセス権を持っていること。

  • バケットを所有する Google Cloud プロジェクトで、プロジェクトレベルのカスタム IAM ロールを作成できること。

  • 対象の Cloud Storage バケットの IAM ポリシーを更新できること。

  • バケットが、選択した BYOC データプレーンのリージョンと一致する単一のリージョンを使用していること。

Notes

バケット統合はリージョン固有です。マルチリージョンバケットとデュアルリージョンバケットは、単一の BYOC データプレーンのリージョンと一致しません。データプレーンのリージョン内のリージョナルバケットを使用してください。

ステップ 1: Zilliz Cloud で統合を開始する​

1

Zilliz Cloud コンソール にログインします。

2

GCP BYOC プロジェクトを開き、左側のナビゲーションで Integrations を選択します。

3

Google Cloud Storage の下で + Integration をクリックします。

4

一意の Integration Name を入力し、必要に応じて Integration Description を入力します。

5

Next をクリックします。

ステップ 2: カスタム Cloud Storage ロールを作成する​

1

Google Cloud コンソールで、外部バケットを所有するプロジェクトを選択します。

2

IAM & Admin > Roles を開き、+ Create role をクリックします。

3

Zilliz Bucket Integration などのタイトルを入力し、以下の権限を追加して、ロールを作成します。

plaintext
storage.buckets.get
storage.objects.create
storage.objects.list
storage.objects.get
権限目的
storage.buckets.getバケットのメタデータを読み取り、そのロケーションを検証します。
storage.objects.get外部ボリュームおよびその他の読み取りワークフロー用のオブジェクトを読み取ります。
storage.objects.listバケット内のオブジェクトとプレフィックスを一覧表示します。
storage.objects.createエクスポートおよびログ転送ワークフロー用の新しいオブジェクトを書き込みます。

ステップ 3: 外部 Cloud Storage バケットを指定する​

1

Zilliz Cloud に戻り、Next をクリックします。

2

Region で、バケットにアクセスする BYOC データプレーンのリージョンを選択します。

3

Cloud Storage Buckets ページで、対象のバケットが同じリージョンを使用していることを確認します。

4

Bucket Name には、バケット名のみを入力します。gs://、オブジェクトプレフィックス、または末尾のスラッシュは含めないでください。

5

Next をクリックします。

ステップ 4: BYOC ストレージ GSA にアクセス権を付与する​

1

対象のバケットの詳細ページで、Permissions タブを開きます。

2

View by principals を選択し、+ Grant access をクリックします。

3

Zilliz Cloud 統合ウィザードのステップ 4 で、表示されている Google Cloud Service Account のメールアドレスをコピーし、New principals に貼り付けます。この表示されているアカウントがストレージ GSA です。

4

Assign roles で、ステップ 2 で作成したカスタムロールを選択します。

5

Save をクリックします。

plaintext
Principal
<BYOC_STORAGE_SERVICE_ACCOUNT>@<BYOC_PROJECT_ID>.iam.gserviceaccount.com

Role
projects/<BUCKET_PROJECT_ID>/roles/<CUSTOM_ROLE_ID>

Scope
Target Cloud Storage bucket

Grant Access to Bucket ステップに表示される Google Cloud サービスアカウントをコピーします。連携に表示される値が信頼できる唯一の情報源です。

Notes

メールアドレスを命名規則から推測したり、GKE ノードサービスアカウント、管理サービスアカウント、ブーターサービスアカウント、または Kubernetes サービスアカウントで代用したりしないでください。現在の統合に表示されている値をコピーしてください。

ステップ 5: 統合を検証して追加する​

1

Zilliz Cloud に戻り、Validate Integration をクリックします。

2

ロールを最近付与した場合は、Google Cloud IAM の反映を待ってから検証を再試行してください。

3

ステータスが Successful に変わったら、Add をクリックします。これで、同じ Zilliz Cloud プロジェクトおよびリージョン内のサポート対象ワークフローで Google Cloud Storage 統合を利用できるようになります。

セキュリティに関する推奨事項​

  • バケット統合用の専用カスタムロールを作成し、一覧に示した 4 つの権限のみに制限してください。

  • ロールは、プロジェクトまたは組織スコープではなく、対象のバケットに付与してください。

  • 別のワークロードに明確な要件がない限り、Public Access Prevention を有効にしたままにしてください。

  • サービスアカウントキーを作成しないでください。データプレーンは、GKE Workload Identity を通じてストレージ GSA を使用します。

  • 組織ポリシー、IAM 拒否ポリシー、VPC Service Controls の境界、または Cloud KMS ポリシーが適用される場合は、必要なデータパスが許可されていることを確認してください。

トラブルシューティング​

検証結果想定される原因確認する項目
bucket region not matchバケットのロケーションが、選択した BYOC データプレーンのリージョンと異なります。データプレーンのリージョンと完全に一致するリージョナルバケットを使用してください。
verify bucket access failedサービスアカウントがバケットのメタデータを読み取れません。カスタムロールに storage.buckets.get が含まれ、正しいバケットに付与されていることを確認してください。
Principal not found表示されたストレージ GSA のメールアドレスが誤ってコピーされたか、別の統合のものです。現在の Zilliz Cloud 統合ウィザードのステップ 4 から Google Cloud Service Account をもう一度コピーし、IAM の付与を再試行してください。
統合の検証は成功するが、後続のワークフローで読み取りまたは書き込みができないオブジェクトの権限が不足しているか、別のポリシーによってブロックされています。storage.objects.get、storage.objects.list、storage.objects.create を確認し、さらに組織の拒否ポリシーと KMS ポリシーも確認してください。