IAM Conditions を使用すると、個々のワークステーション ポートへのアクセス権を付与できます。これは、個々のワークステーション ポートへのアクセスを制限して共有する場合に便利です。たとえば、IAM 条件を使用して、ワークステーション ポートで実行されているデモサーバーへのアクセス権を付与できます。
Cloud Workstations は、destination.port IAM Conditions 属性をサポートしています。
IAM Conditions の詳細については、以下をご覧ください。
始める前に
個々のワークステーション ポートへのアクセス権を付与するには、ワークステーションに対する Cloud Workstations ポリシー管理者(roles/workstations.policyAdmin)ロールが必要です。
ワークステーションの IAM ロールを確認する
ワークステーションに Cloud Workstations ユーザー(roles/workstations.user)ロールと Cloud Workstations ポリシー管理者(roles/workstations.policyAdmin)ロールがあることを確認します。これらのロールがない場合は、ワークステーションでこれらのロールを付与するよう組織の Cloud Workstations 管理者に依頼してください。
ワークステーションでデモサーバーを起動する
ワークステーションの起動ガイドを使用して、ワークステーションを起動して接続します。ワークステーションで次のコマンドを実行して、ワークステーション ポートでデモサーバーを起動します。
python3 -m http.server WORKSTATIONS_PORT
次のように置き換えます。
WORKSTATIONS_PORT: デモサーバーがリッスンするポート。たとえば、8081 を使用します。
ワークステーションの条件付き IAM ポリシーを更新する
ワークステーション ポートへのアクセスを許可するには、 Google Cloud コンソールまたは gcloud CLI iam policies コマンドを使用します。
コンソール
ワークステーションに条件付きアクセスを付与するには:
Google Cloud コンソールで、[Cloud Workstations] > [ワークステーション] ページに移動します。
ワークステーションを見つけて、more_vert [その他] オプション メニューをクリックし、[ユーザーを追加] を選択します。
![[**ワークステーション**] ページでユーザーを追加し、権限を編集する](https://cloud-dot-devsite-v2-prod.appspot.com/static/workstations/images/workstations-three-dots-iam.png?hl=ja)
条件付きアクセスを付与するには、プリンシパルのメールアドレスを入力します。例:
222larabrown@gmail.comロールとして [Cloud Workstations ユーザー] が選択されていることを確認します。
IAM 条件を更新して、ポート固有のアクセス権を付与します。
[IAM の条件を追加] をクリックします。
「ポート WORKSTATIONS_PORT」などのタイトルを指定します。
[条件エディタ] タブで、次の条件を入力します。
destination.port == WORKSTATIONS_PORT
- [保存] をクリックして、特定のポートに対するプリンシパルの条件付きアクセス権の付与を完了します。
gcloud
gcloudCLIworkstations get-iam-policyコマンドを使用して、ワークステーションの IAM ポリシーを取得します。このコマンドは、ポリシーを/tmp/WORKSTATIONS_NAME.yamlファイルに出力します。ファイルが存在する場合、上書きされます。gcloud workstations get-iam-policy WORKSTATIONS_NAME \ --cluster=WORKSTATIONS_CLUSTER_NAME \ --config=WORKSTATIONS_CONFIG_NAME \ --region=LOCATION \ --project=WORKSTATIONS_PROJECT_ID \ > /tmp/WORKSTATIONS_NAME.yaml次のように置き換えます。
WORKSTATIONS_NAME: ワークステーションの名前。WORKSTATIONS_CONFIG_NAME: ワークステーション構成の名前。WORKSTATIONS_CLUSTER_NAME: ワークステーション クラスタの名前。LOCATION: ワークステーション クラスタのリージョン名。WORKSTATIONS_PROJECT_ID: ワークステーションを含む Cloud Workstations プロジェクトの ID。
ポリシーの YAML 形式が
/tmp/WORKSTATIONS_NAME.yamlにダウンロードされます。bindings: - members: - user:222larabrown@gmail.com role: roles/workstations.user etag: BwYdnV9Eg7Y= version: 1プリンシパルに条件付きアクセス権を付与するには、前の手順でダウンロードしたポリシー ファイルに次の条件式(強調表示されている部分)を追加します。
etag は変更しないでください。このポリシーには
conditionフィールドが含まれているため、バージョンが3として指定されていることを確認します。次に例を示します。
bindings: - members: - user:YOUR_ID role: roles/workstations.user - condition: expression: destination.port == WORKSTATIONS_PORT title: Port WORKSTATIONS_PORT members: - user:PRINCIPAL role: roles/workstations.user etag: BwYlui8uSXo= version: 3次のように置き換えます。
YOUR_ID: 自分のログイン ID。例:222larabrown@gmail.comPRINCIPAL: ワークステーションのポート WORKSTATIONS_PORT のアクセス権を共有するプリンシパル。例:baklavainthebalkans@gmail.comWORKSTATIONS_PORT: デモサーバーがリッスンしているワークステーションのポート。
gcloudCLIworkstations set-iam-policyコマンドを使用して、ワークステーションの IAM ポリシーを設定します。gcloud workstations set-iam-policy WORKSTATIONS_NAME \ --cluster=WORKSTATIONS_CLUSTER_NAME \ --config=WORKSTATIONS_CONFIG_NAME \ --region=LOCATION \ --project=WORKSTATIONS_PROJECT_ID \ /tmp/WORKSTATIONS_NAME.yaml次のように置き換えます。
WORKSTATIONS_NAME: ワークステーションの名前。WORKSTATIONS_CONFIG_NAME: ワークステーション構成の名前。WORKSTATIONS_CLUSTER_NAME: ワークステーション クラスタの名前。LOCATION: ワークステーション クラスタのリージョン名。WORKSTATIONS_PROJECT_ID: ワークステーションを含む Cloud Workstations プロジェクトの ID。
ワークステーションの IAM ポリシーが更新されると、プリンシパルはワークステーションの指定されたポートにアクセスできるようになります。
ワークステーションの URL を共有する
プリンシパルは、次のワークステーション URL を使用して、指定されたポートにアクセスできます。
https://WORKSTATIONS_PORT-WORKSTATIONS_NAME.WORKSTATIONS_CLUSTER_NAME.cloudworkstations.dev
プレースホルダは次のものを表します。
WORKSTATIONS_PORT: デモサーバーがリッスンしているポート。WORKSTATIONS_NAME: ワークステーション名。WORKSTATIONS_CLUSTER_NAME: ランダムに生成されたクラスタ識別子。cloudworkstations.dev: ワークステーションのデフォルトのドメイン名。
プリンシパルは、アクセス権のないワークステーションの他のポートにアクセスできません。