AI Platform Prediction は、Identity and Access Management(IAM)を使用してリソースへのアクセスを管理します。リソースへのアクセス権を付与するには、ユーザー、グループ、またはサービス アカウントに 1 つ以上のロールを割り当てます。モデルを共有するには、モデルとそのバージョンにアクセスできるようにするロールを付与します。
このガイドでは、モデルリソースへのアクセス権の付与に使用できる、2 つの事前定義された AI Platform Prediction のロールに焦点を当てています。
- AI Platform Prediction モデルオーナー
- AI Platform Prediction モデルユーザー
他のロールの詳細については、AI Platform Prediction で使用できるすべての IAM のロールに関する説明をご覧ください。
始める前に
- 機械学習モデルをトレーニングします。
- AI Platform Prediction にモデルをデプロイします。
モデルのロール
AI Platform Prediction のモデルオーナーとモデルユーザーのロールを使用すると、特定のモデルリソースに対してさまざまな権限を付与できます。
個人やサービスにモデルユーザーのロールを付与することで、個人やサービスとモデルを共有できます。
ロールのタイトル | 役割名 | 機能 |
---|---|---|
AI Platform Prediction モデルオーナー |
モデルとそのバージョンへの完全アクセス権。このロールは、モデルを作成するユーザーに自動的に付与されます。 |
|
AI Platform Prediction モデルユーザー |
モデルとそのバージョンを読み取り、予測に使用する権限。このロールを付与することで、特定のモデルを簡単に共有できます。 |
モデルへのアクセス権を個人アカウントとサービス アカウントに付与する
この例では、特定のモデルの IAM ポリシーを編集し、個人とサービス アカウントにモデルオーナーとモデルユーザーのロールを付与する方法を示します。ポリシー ファイルの編集には、API、gcloud
または Google Cloud コンソールを使用します。
コンソール
モデルをユーザーまたはサービス アカウントと共有する
AI Platform Prediction の [モデル] ページを開きます。
共有したいモデルのチェックボックスをオンにします。
右上隅にある [情報パネルを表示] ボタンをクリックして、[権限] タブを表示します。
[メンバーを追加] フィールドに、モデルを共有するユーザーの Google アカウントを追加します。たとえば、「email1@gmail.com」と入力します。
[ロールを選択] プルダウン リストから、ユーザーに追加するロールを選択します。モデルリソースを共有するため、[ML Engine モデルオーナー] または [ML Engine モデルユーザー] を選択します。
選択する役割が不明な場合は、モデルの役割をご覧ください。
[ロールを選択] プルダウン リストの横にある [追加] ボタンをクリックして、ロールの選択を確定します。
Google Cloud コンソールのページが更新され、[権限] タブで割り当てたロールとそのロールに関連付けられているメンバーのリストが表示されます。
ユーザーまたはサービス アカウントとのモデルの共有を停止するには、アカウント ID の横にあるゴミ箱アイコンをクリックします。
gcloud
ポリシー ファイルを直接編集してモデルポリシーを変更する
gcloud
コマンドで JSON または YAML ファイルを使用できます。この例では JSON を使用します。
変更するポリシーを入手して、それを JSON ファイルに書き込みます。
gcloud ai-platform models get-iam-policy <MODEL_NAME> --format json > iam.json
ポリシー ファイル(この例では
iam.json
)を開くか、cat iam.json
を実行してポリシーを表示します。次のポリシー例では、サービス アカウントに AI Platform Prediction モデルオーナーのロールを割り当てて、オンライン予測にアクセスできるようにしています。{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] } ], "etag": "BwVUJYGz8M4=", }
テキスト エディタで、次のように
iam.json
ファイルを更新します。グループ メンバーとそれらのメンバーのロールを定義する新しいオブジェクトをbindings
配列に追加します。たとえば、roles/ml.modelUser
ロールをユーザーemail2@gmail.com
に付与するには、次のようにサンプルを変更します。{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] }, { "role": "roles/ml.modelUser", "members": [ "user:email2@gmail.com" ] } ], "etag": "BwVUJYGz8M4=", }
次のコマンドを実行して、プロジェクトのポリシーを更新します。
gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
このコマンドは、YAML で更新済みのポリシーを出力します。
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
ポリシー バインディング コマンドによるポリシーの変更
add-iam-policy-binding
コマンドと remove-iam-policy-binding
コマンドを使用して、モデルへのアクセス権の付与、取り消し、更新を行います。
モデルをユーザーと共有する
既存の AI Platform Prediction モデルポリシーにユーザーを追加するには、次のように
add-iam-policy-binding
コマンドを使用します。gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \ --member user:email3@gmail.com --role roles/ml.modelUser
コマンドから更新したポリシーが出力されます。
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
モデルをサービスと共有する
既存の AI Platform Prediction モデルポリシーにサービス アカウントを追加するには、次のように
add-iam-policy-binding
コマンドを使用します。gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \ --member=serviceAccount:newserviceapp@appspot.gserviceaccount.com \ --role=roles/ml.modelOwner
コマンドから更新したポリシーが出力されます。
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com - serviceAccount:newserviceapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
モデルの共有を停止する
ユーザーまたはサービスとのモデルの共有を停止するには、
remove-iam-policy-binding
コマンドを使用して、既存の AI Platform Prediction モデルポリシーからユーザーまたはサービスを削除します。この例では、モデルポリシーからモデルオーナーemail1@gmail.com
を削除します。gcloud ai-platform models remove-iam-policy-binding <MODEL_NAME> \ --member=user:email1@gmail.com \ --role=roles/ml.modelOwner
コマンドから更新したポリシーが出力されます。
bindings: - members: - serviceAccount:otherapp@appspot.gserviceaccount.com - serviceAccount:newserviceapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
REST API
JSON API によるポリシーの変更
次のリクエストを送信し、既存のポリシーを取得します。
GET https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy
このコマンドは、レスポンスで現在のポリシーを返します。
{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] } ] }
ポリシーを変更したら、次のリクエストを送信してポリシーを更新します。
POST https://ml.googleapis.com/v1/projects/<project>/models/<model>:setIamPolicy
このコマンドは、レスポンスで更新済みのポリシーを返します。この例では、モデルユーザーとして
email2@gmail.com
というユーザーを追加しました。{ "policy": { "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] }, { "role": "roles/ml.modelUser", "members": [ "user:email2@gmail.com" ] } ] } }
アクセス トークンを取得するには、次のコマンドを実行します。
gcloud auth print-access-token
API を呼び出す際は、このトークンの値を Authorization ヘッダーで署名なしトークンとして渡します。
curl -s -H 'Authorization: Bearer <ACCESS_TOKEN>' \ https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy