クロスアカウントサービスアカウントの作成
このページでは、Zilliz Cloud がプロジェクトデータプレーンをブートストラップするためのクロスアカウントサービスアカウントを作成および構成する方法について説明します。このサービスアカウントにより、Zilliz Cloud は代理で VPC リソースを管理するための必要な権限を付与されます。
Zilliz BYOC は現在、一般提供されています。アクセスおよび実装の詳細については、Zilliz Cloud 営業担当にお問い合わせください。
手順
Google Cloud Platform (GCP) ダッシュボードを使用して EKS ロールを作成できます。別の方法として、Zilliz Cloud が提供する Terraform スクリプトを使用して、GCP 上の Zilliz Cloud プロジェクト用インフラストラクチャをブートストラップできます。詳細については、Terraform プロバイダー を参照してください。
ステップ1: カスタムロールを作成
クロスアカウントサービスアカウントを作成する前に、サービスアカウントに割り当てる必要がある複数のカスタムロールを作成する必要があります。
インスタンスグループマネージャーカスタムロールを作成
インスタンスグループマネージャーカスタムロールを作成し、上記で作成したサービスアカウントにカスタムロールを割り当てることで、サービスアカウントが GKE ノードを管理するために最低限必要な権限を持つようにします。
インスタンスグループマネージャーカスタムロールを作成する手順は以下のとおりです:
-
GCP コンソールで、IAM & Admin を検索してクリックします。
-
左側のナビゲーションペインから ロール を選択します。
-
ロールを作成 をクリックします。
-
作成するカスタムロールのタイトルと説明を設定します。
このデモでは、Zilliz Cloud カスタムロール for GKE Management を使用できます。
-
ロール起動ステージ を Alpha から 一般提供 に変更します。
-
権限を追加 をクリックします。このステップで追加する権限は以下のとおりです:
-
compute.instanceGroupManagers.get
-
compute.instanceGroupManagers.update
-
-
作成 をクリックします。
IAM カスタムロールを作成
IAM カスタムロールを作成し、上記で作成したサービスアカウントにカスタムロールを割り当てることで、サービスアカウントが IAM ポリシーを管理するために最低限必要な権限を持つようにします。
カスタムロールを作成する手順は以下のとおりです:
-
GCP コンソールで、IAM & Admin を検索してクリックします。
-
左側のナビゲーションペインから ロール を選択します。
-
ロールを作成 をクリックします。
-
作成するカスタムロールのタイトルと説明を設定します。
このデモでは、IAM カスタムロール を使用できます。
-
ロール起動ステージ を Alpha から 一般提供 に変更します。
-
権限を追加 をクリックします。このステップで追加する権限は以下のとおりです:
-
iam.serviceAccounts.getIamPolicy
-
iam.serviceAccounts.setIamPolicy
-
-
作成 をクリックします。
ステップ2: サービスアカウントを作成
このステップでは、Zilliz Cloud が代理で VPC リソースを管理するためのサービスアカウントを作成し、サービスアカウントのメールアドレスを Zilliz Cloud コンソールに戻します。
サービスアカウントを作成する手順は以下のとおりです:
-
GCP コンソールで、IAM & Admin を検索してクリックします。
-
左側のナビゲーションペインで サービスアカウント を選択します。
-
サービスアカウントを作成 をクリックします。
-
作成するサービスアカウントに適切な名前を設定します。
このデモでは、
your-org-cross-account-saに設定できます。サービスアカウントIDはサービスアカウント名の最初の18文字です。適切な値に手動で設定できます。 -
作成して続行 をクリックします。
-
権限 セクションで、前のステップで作成したカスタムロールと複数の GCP 管理ロールをサービスアカウントに追加します。
以下の表は、サービスアカウントに割り当てるロールを示しています。
ロール
タイプ
条件
カスタム
resource.name.extract("projects/<name>").startsWith("PROJECT_ID") &&resource.name.extract("zones/<name>").startsWith("REGION") &&resource.name.extract("instanceGroupManagers/<name>").startsWith("gke-CLUSTER_NAME")カスタム
api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", []).hasOnly(["roles/iam.workloadIdentityUser"])Kubernetes Engine Admin
GCP 管理
N/A
Storage Object Viewer
GCP 管理
resource.name.startsWith("projects/_/buckets/YOUR_BUCKET_NAME")📘Notes上記の式の3つのプレースホルダーを実際の値に置き換える必要があります:
PROJECT_ID
これはあなたの GCP プロジェクトIDである必要があります。
REGION
これは BYOC プロジェクトのクラウドリージョンである必要があります。
CLUSTER_NAME
これは、Zilliz Cloud が代理で作成する GKE クラスターの名前である必要があります。
Google Cloud はクラスター名の前にプレフィックス
gke-を追加します。したがって、条件にgke-プレフィックスを維持し、CLUSTER_NAMEを実際の名前に置き換える必要があります。YOUR_BUCKET_NAME
これは、前のステップで作成したバケットの名前である必要があります。
-
保存 をクリックします。
他のサービスアカウントへのアクセスを許可
前のステップで作成したクロスアカウントサービスアカウントに、他のいくつかのサービスアカウントへのアクセスを許可します。
以下の手順に従って、クロスアカウントサービスアカウントにこれらのサービスアカウントへのアクセスを許可します。
-
GCP コンソールで、サービスアカウント を検索してクリックします。
-
リスト内の以下のサービスアカウントを検索してクリックします。
説明
これは、Compute Engine API を有効にしたときに自動的に作成されるサービスアカウントです。
📘NotesGCP プロジェクトには、プロジェクトIDとプロジェクト番号があります:プロジェクトIDは GCP コンソールでプロジェクトを作成したときに入力した文字列であり、プロジェクト番号は GCP がプロジェクト作成時に割り当てた文字列です。
PROJECT_NUMBERを自分の GCP プロジェクト番号に置き換える必要があります。 -
アクセス権のあるプリンシパル タブに切り替え、アクセスを許可 をクリックします。
-
プリンシパルを追加 > 新しいプリンシパル に前のステップで作成したクロスアカウントサービスアカウントを入力します。
-
ロールを割り当て > ロール で サービスアカウントユーザー を選択します。
Zilliz Cloud のサービスアカウントを模倣
Zilliz Cloud コンソールで提供された Zilliz Cloud のサービスアカウントを、クロスアカウントサービスアカウントで模倣させます。
Zilliz Cloud が提供するサービスアカウントを模倣する手順は以下のとおりです:
-
Zilliz Cloud コンソールで、Zilliz Cloud が提供するサービスアカウントをコピーします。
-
GCP コンソールに移動し、IAM & Admin を検索してクリックします。
-
左側のナビゲーションペインで サービスアカウント を選択します。
-
クロスアカウントサービスアカウントをフィルタリングし、その名前をクリックして詳細を表示します。
-
アクセス権のあるプリンシパル タブに切り替え、アクセスを許可 をクリックします。
-
Zilliz Cloud コンソールからコピーしたサービスアカウントを プリンシパルを追加 > 新しいプリンシパル に貼り付けます。
-
ロールを割り当て > ロール で サービスアカウントトークン作成者 を選択します。
-
保存 をクリックします。