AI Platform Pipelines は、機械学習(ML)パイプラインが Google Cloud リソースにアクセスするときにユーザー、グループ、サービスを認証するため、Identity and Access Management(IAM)のロールに依存します。
このドキュメントでは、次の作業に必要なロールについて説明します。
- AI Platform Pipelines を設定する。
- ユーザーが管理するサービス アカウントで AI Platform Pipelines を実行する。
- ユーザーとして AI Platform Pipelines にアクセスする。
IAM のコンセプトと IAM の仕組みについて学習する。
AI Platform Pipelines の設定に必要なロール
AI Platform Pipelines をデプロイするには、プロジェクトの閲覧者(roles/viewer
)と Kubernetes Engine 管理者(roles/container.admin
)のロールが付与されている必要があります。閲覧者のロールでは、プロジェクト内のすべてのリソースに対する読み取りアクセス権が付与されます。Kubernetes Engine 管理者のロールでは、Kubernetes クラスタと Kubernetes API オブジェクトに対する完全アクセス権が付与されます。
最小権限の原則に従うには、きめ細かいアクセス権を使用するように AI Platform Pipelines クラスタを設定します。きめ細かいアクセス権を持つようにクラスタを設定するには、プロジェクトに対するサービス アカウント管理者(roles/iam.serviceAccountAdmin
)のロールも付与する必要があります。サービス アカウント管理者のロールでは、IAM サービス アカウントの作成と構成を行うためのアクセス権が付与されます。
詳細については、IAM ロールのアクセス権の付与をご覧ください。
ロール | 権限 |
---|---|
閲覧者(roles/viewer ) |
プロジェクト内の既存のリソースやデータを表示する(ただし変更は不可能)など、状態に影響しない読み取り専用アクションに必要な権限。 |
Kubernetes Engine 管理者( クラスタとその Kubernetes API オブジェクトを完全に管理するためのアクセス権を付与します。
ノードにサービス アカウントを設定するには、ノードが使用するユーザー管理サービス アカウントに対するサービス アカウント ユーザーのロール( このロールを付与できる最下位レベルのリソース:
|
|
サービス アカウント管理者( サービス アカウントを作成、管理します。 このロールを付与できる最下位レベルのリソース:
|
|
ユーザーが管理するサービス アカウントで AI Platform Pipelines を実行するために必要なロール
Google Kubernetes Engine(GKE)クラスタ上の Pod は、GKE クラスタのサービス アカウントを使用して Google Cloud に対して認証を行います。AI Platform Pipelines の設定と使用を簡単に行えるように、AI Platform Pipelines によって作成された GKE クラスタでは https://www.googleapis.com/auth/cloud-platform
アクセス スコープを持つデフォルトの Compute Engine サービス アカウントを使用します。このアクセス スコープは、プロジェクトで有効にした Google Cloud リソースと API への完全アクセス権を提供します。これによって、クラスタ上のワークロードで、Google Cloud への必要以上のアクセスが発生する可能性があります。
AI Platform Pipelines クラスタで実行するワークロードにきめ細かい権限を割り当てるには、クラスタのサービス アカウントを作成し、このサービス アカウントにプロジェクトに対する次のロールへのアクセス権を付与します。
- モニタリング閲覧者: モニタリング閲覧者(
roles/monitoring.viewer
)のロールでは、モニタリング データと構成に対する読み取りアクセス権が付与されます。 - モニタリング指標の書き込み: モニタリング指標の書き込み(
roles/monitoring.metricWriter
)のロールでは、クラスタで指標を書き込めるように書き込みアクセス権が付与されます。 - ログ書き込み: ログ書き込み(
roles/logging.logWriter
)のロールでは、クラスタでログエントリを書き込むことが可能です。 - ストレージ オブジェクト閲覧者: Container Registry に保存されるパイプライン用のカスタム コンテナ イメージを作成する場合は、AI Platform Pipelines クラスタに、プロジェクトに対する Storage オブジェクト閲覧者(
roles/storage.objectViewer
)のロールへのアクセス権を付与します。
また、ML パイプラインで使用する Google Cloud リソースまたは API へのアクセス権をサービス アカウントに付与する必要もあります。
- ユーザーが管理するサービス アカウントを使用するように GKE クラスタを構成します。
- 詳しくは、IAM のロールとサービス アカウントの管理をご覧ください。
ロール | タイトル | 説明 | 権限 |
---|---|---|---|
モニタリング閲覧者( すべてのモニタリング データや構成に関する情報を取得して一覧表示するための読み取り専用アクセス権を付与します。 このロールを付与できる最下位レベルのリソース:
|
|
||
モニタリング指標の書き込み( 指標に対する書き込み専用アクセス権を付与します。これにより、Cloud Monitoring エージェントや、指標を送信する他のシステムに必要な権限が付与されます。 このロールを付与できる最下位レベルのリソース:
|
|
||
ログ書き込み( ログエントリを書き込むための権限を付与します。 このロールを付与できる最下位レベルのリソース:
|
|
||
Storage オブジェクト閲覧者( オブジェクトとそのメタデータ(ACL を除く)を閲覧するためのアクセス権を付与します。バケット内のオブジェクトを一覧表示することもできます。 このロールを付与できる最下位レベルのリソース:
|
|
ユーザーとして AI Platform Pipelines にアクセスするために必要なロール
AI Platform Pipelines クラスタにアクセスするには、各ユーザーに Kubernetes Engine クラスタ閲覧者(roles/container.clusterViewer
)のロールと、Google Kubernetes Engine クラスタのサービス アカウントに対するサービス アカウント ユーザーのロールが付与されている必要があります。
ロール | タイトル | 説明 | 権限 |
---|---|---|---|
Kubernetes Engine Cluster 閲覧者( GKE クラスタを取得して一覧表示するためのアクセス権を付与します。 |
|
次のセクションに進んで、Kubernetes Engine クラスタ閲覧者のロールとサービス アカウント ユーザーのロールへのアクセス権をユーザーに付与する方法を学習します。
ユーザーに AI Platform Pipelines へのアクセスを許可する
次の手順を使用して、ユーザー アカウントに AI Platform Pipelines クラスタへのアクセス権を付与します。
Google Cloud コンソールで AI Platform Pipelines を開きます。
AI Platform Pipelines クラスタを探します。以降のステップで使用できるように [クラスタ]と [ゾーン] の値をメモします。
Cloud Shell セッションを開きます。
Cloud Shell は、Google Cloud コンソールの下部にあるフレームで開きます。Cloud Shell を使用してこのプロセスの残りを完了します。
次のコマンドを実行して、この Cloud Shell セッションでのデフォルトの Google Cloud プロジェクトを設定します。
gcloud config set project PROJECT_ID
PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。
次のコマンドを実行して、GKE クラスタで使用するサービス アカウントを見つけます。
gcloud container clusters describe CLUSTER_NAME --zone ZONE \ --format="flattened(nodePools[].config.serviceAccount)"
以下のように置き換えます。
- CLUSTER_NAME: GKE クラスタの名前。
- ZONE: クラスタが作成されたゾーン。
レスポンスに、クラスタが
default
という名前のサービス アカウントを使用していることが示される可能性があります。この値は、Compute Engine のデフォルトのサービス アカウントを表します。次のコマンドを実行して、このサービス アカウントの完全な名前を確認します。gcloud iam service-accounts list \ --filter "compute@developer.gserviceaccount.com"
Compute Engine のデフォルトのサービス アカウントの詳細を確認してください。
GKE クラスタのサービス アカウントに対するサービス アカウント ユーザーのロールをユーザー アカウントに付与します。
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME \ --member=user:USERNAME \ --role=roles/iam.serviceAccountUser
以下のように置き換えます。
- SERVICE_ACCOUNT_NAME: 前の手順で確認した GKE クラスタのサービス アカウントの名前。サービス アカウント名は、*@*.gserviceaccount.com という形式になります。
- USERNAME: Google Cloud のユーザー名。
ユーザー アカウントにプロジェクトの GKE クラスタ閲覧者のロールへのアクセス権を付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:USERNAME --role roles/container.clusterViewer
以下のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクトの ID。
- USERNAME: Google Cloud のユーザー名。