[組織ポリシー]Vertex AI Workbench のノートブックとインスタンスのアクセスモードを定義するポリシーを試してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
概要
Google CloudのVertex AI関連の組織ポリシーにVertex AI Workbench のノートブックとインスタンスのアクセスモードを定義するポリシーがあります。このポリシーは、Vertex AIのノートブックとンスタンスに対するアクセスモード(single-user、service-account)を制御できるようにするものです。
各モードの概要に関しては以下となります。
| アクセスモード | 説明 |
|---|---|
| シングルユーザー | 指定したユーザーのみがアクセス可能 |
| サービスアカウント | サービスアカウントを通じて複数のユーザーにアクセス権を付与可能 |
上記のアクセスモードを制御するための組織ポリシーが用意されています。(リファレンスより引用)
| 項目名 | 説明 |
|---|---|
| Vertex AI Workbench のノートブックとインスタンスのアクセスモードを定義する | このリスト型制約は、適用される Vertex AI Workbench のノートブックとインスタンスに対して許可されるアクセスのモードを定義します。許可リストまたは拒否リストでは、service-account モードで複数のユーザーの指定、またはsingle-user モードでシングル ユーザー アクセスの指定を行えます。許可または拒否するアクセスモードを明示的に表示する必要があります。 constraints/ainotebooks.accessMode |
今回の記事では、constraints/ainotebooks.accessMode制約について調査と、実際に設定をしてみてどのようなことができるのか考えてみました。
前提条件
- 組織ポリシーを操作できるロールを所持していること(組織の管理者など)
- 組織が作成されていること
- プロジェクトに対して組織ポリシーを設定する(親のポリシーをオーバーライドする)
※組織ポリシーの設定は環境によっては重大な影響を引き起こす可能性があるので十分検討・検証の上実施してください。
どんな設定ができるのか
設定可能ルール
本ポリシーconstraints/ainotebooks.accessModeで設定可能なルールと概要は以下となります。
| ルール | 概要 |
|---|---|
| すべて許可 | service-account、single-userどちらのモードでもインスタンス作成可能。 |
| すべて許可しない | service-account、single-userどちらのモードでもインスタンス作成不可能(=インスタンスを作成できない)。 |
| カスタム | 指定のタグを設定している場合[拒否]または[許可]される。[拒否]インスタンス作成不可。[許可]インスタンス作成可能 |
また、本ポリシーはデフォルトではすべて許可となっておりservice-account・single-userどちらも設定できるようになっております。
カスタムルールに関して
本制約ではカスタムルールの設定が可能です。カスタムルールではタグをインスタンスに設定することで指定タグの場合だけ制約を適用するということが可能です。
その場合、single-userとservice-acccountのモードを指定するときにはカスタム値に以下を設定します。
| カスタム値 | 概要 |
|---|---|
| is:service-account | service-accountモードを指定 |
| is:single-user | single-userモードを指定 |
設定して動作を確認してみる
確認してみた動作は以下となります。
- すべて許可しないルール
- カスタムルールで指定タグが設定されている場合
service-accountモードでのみインスタンス作成可能に制限。指定タグが設定されていない場合はインスタンス作成不可
すべて許可しないルールを試してみる
設定は簡単です。
まずIAMと管理のメニューより組織ポリシーを選択します。画面中央に表示されるフィルタの入力欄にaccessModeと入力するとconstraints/ainotebooks.accessModeが表示されるのでそれをクリックします。

その後表示されるDefine access mode for Vertex AI Workbench notebooks and instancesをクリックします。

現在の設定状況が表示されます。画面右上のポリシーを管理を押下して設定画面へ遷移します。
遷移後は、以下の設定をします。
| 設定項目 | 効果 | |
|---|---|---|
| ポリシーのソース | 親のポリシーをオーバーライドする | 親のポリシーをプロジェクトで上書きできる |
| ポリシーの適用 | 置き換える | 親のポリシーを無視する。プロジェクト独自の設定をすることができる |
| ポリシーの値 | すべて許可しない | single-user・service-accountのどちらも設定できなくなる(=インスタンス作成できない) |
設定例:

設定したら、ポリシーを設定を押下して実際にVertex AIインスタンスを作成してみます。
Vertex AIワークベンチのコンソールから適当な設定をしてインスタンスの新規作成をしてみてください。少し待つと以下のように黒いポップアップが立ち上がります。

ポップアップには以下のメッセージが表示されているはずです。
ノートブックを作成できませんでした: Constraint constraints/ainotebooks.accessMode violated for 'projects/xxx' attempting to set 'access-mode' to 'service-account'. For details, please contact your org policy administrator.
制約constraints/ainotebooks.accessModeは、'projects/xxx'で'access-mode'を'service-account'に設定しようとして違反しました。 詳細については、orgポリシー管理者に連絡してください。(DeepL翻訳)
上記のメッセージが表示され、またインスタンスの作成は出来ません。constraints/ainotebooks.accessMode制約で、すべて許可しないを設定しているためインスタンス作成時にアクセスモードでsingle-userまたはservice-accountのどちらを選んでも制約に抵触してしまうためインスタンス作成は行うことが出来ません。
それでは続いて次の検証に移っていきます。がその前に設定したすべて許可しないのルールを削除しておきます。削除はルールの編集の右側ゴミ箱をクリックすると出来ます。

タグを作成しておく
タグを用いたルール設定を行う前準備として、タグの作成を先に行います。
IAMと管理メニューのタグを押下してタグキーに適当な値を入力します。
入力後はタグの値の下の値を追加を押下します。
私は今回は以下の設定値でタグを作成しました。
| 設定項目 | 設定値 |
|---|---|
| タグキー | sample-tag-key |
| タグの値 | sample-tag-value |

タグの値も適当な値を入力したらタグキーを作成を押下します。
作成されたタグをクリックすると、タグの詳細を見ることができます。

タグキー IDとタグ値IDをこの後使うので控えておきます。
service-accountモードでのみインスタンス作成可能にしてみる
constraints/ainotebooks.accessMode制約のポリシー編集画面でルールの追加を押下して以下の設定値を入力します。
| 設定項目 | 設定値 |
|---|---|
| ポリシーの値 | カスタム |
| ポリシーの種類 | 許可 |
| カスタム値 | is:service-account |

条件を追加を押下すると条件の編集画面が立ち上がるので以下の設定をします。
| 設定項目 | 設定値 |
|---|---|
| タイトル | 任意のタイトル |
| 説明 | 任意の説明 |
| 条件タイプ | タグ |
| 演算子 | 値IDがある |
| キーID | 作成済みタグのキー値ID |
| 値ID | 作成済みタグの値ID |

準備ができたのでVertex AIのインスタンスを作成してみます。
タグを設定せずに、single-userモードだけ指定して作成してみます。

作成しようとすると以下のエラーメッセージが出力されて、インスタンス作成が出来ません。
ノートブックを作成できませんでした: Constraint constraints/ainotebooks.accessMode violated for 'projects/peak-academy-428409-m7' attempting to set 'access-mode' to 'single-user'. For details, please contact your org policy administrator.
ノートブックを作成できませんでした: 制約constraints/ainotebooks.accessMode違反 'projects/project-num' で 'access-mode' を 'singleuser' に設定しようとしています。詳細については、組織ポリシー管理者にお問い合わせください。(DeepL翻訳)
今回設定した組織ポリシーでは指定タグが付与されていてservice-accountモードでのみインスタンス作成が可能となっています。なのでタグもなく、single-userモードでインスタンス作成を試行したので制約のルールに抵触してエラーが発生しました。
さて、それではタグを設定してservice-accountモードを指定してインスタンスを作成してみましょう。
タグの設定はインスタンス作成時のネットワークタグの欄にタグ作成時のタグキーの値を入力します。

タグ入力後は他の設定値は適当に設定して、service-accountモードを選択してインスタンス作成を行います。

先ほどのsingle-userモードを指定した時とは違い、無事にインスタンス作成が開始します。(作成されると料金が発生するので不要であれば削除してください)

また、タグを設定してsingle-userモードで作成をしてみると以下のエラーメッセージが出力されインスタンスの作成は出来ません。
ノートブックを作成できませんでした: Constraint constraints/ainotebooks.accessMode violated for 'projects/project-num' attempting to set 'access-mode' to 'single-user'. For details, please contact your org policy administrator.
まとめ
以下の設定をconstraints/ainotebooks.accessMode制約で行った場合、
| 設定項目 | 設定値 |
|---|---|
| ポリシーの値 | カスタム |
| ポリシーの種類 | 許可 |
| カスタム値 | is:service-account |
| 条件タイプ | タグ |
| 演算子 | 値IDがある |
| キーID | 作成済みタグのキー値ID |
| 値ID | 作成済みタグの値ID |
実行できるパターンは以下となります。
| タグ | accessMode | インスタンス作成 |
|---|---|---|
| なし | single-user | 作成不可 |
| なし | service-account | 作成不可 |
| 指定タグあり | single-user | 作成不可 |
| 指定タグあり | service-account | 作成可 |
となります。
また記事には検証を記載していませんがカスタム値でis:single-userとした場合の実行できるパターンは以下となります。
| タグ | accessMode | インスタンス作成 |
|---|---|---|
| なし | single-user | 作成不可 |
| なし | service-account | 作成不可 |
| 指定タグあり | single-user | 作成可 |
| 指定タグあり | service-account | 作成不可 |
おわりに
Vertex AI Workbench のノートブックとインスタンスのアクセスモードを定義するポリシーに関して検証をしてみました。本ポリシーに関してはリファレンスには具体的な設定方法までは記載されていないので自身でさまざまなリファレンスから情報を集めて試行錯誤するのになかなか苦労しました。
今回設定したパターン以外にもさまざまな設定が可能だと思うのでぜひご自身で試行錯誤してみてください。
今後も他の組織ポリシーを検証していきます。この記事が組織ポリシーの設定方法に悩んでいる方の一助となれば嬉しいです。それではまた。
参考
組織のポリシーの作成と管理
組織ポリシーの制約
インスタンスの JupyterLab インターフェースへのアクセスを管理する






