個々の Cloud Workstations ポートへのアクセス権を付与する

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 コマンドを使用します。

コンソール

ワークステーションに条件付きアクセスを付与するには:

  1. Google Cloud コンソールで、[Cloud Workstations] > [ワークステーション] ページに移動します。

    [ワークステーション] に移動

  2. ワークステーションを見つけて、more_vert [その他] オプション メニューをクリックし、[ユーザーを追加] を選択します。

    [**ワークステーション**] ページでユーザーを追加し、権限を編集する

  3. 条件付きアクセスを付与するには、プリンシパルのメールアドレスを入力します。例: 222larabrown@gmail.com

  4. ロールとして [Cloud Workstations ユーザー] が選択されていることを確認します。

  5. IAM 条件を更新して、ポート固有のアクセス権を付与します。

    1. [IAM の条件を追加] をクリックします。

    2. ポート WORKSTATIONS_PORT」などのタイトルを指定します。

    3. [条件エディタ] タブで、次の条件を入力します。

    destination.port == WORKSTATIONS_PORT
    

    宛先ポート 8081 の条件を含む IAM 条件エディタ

    1. [保存] をクリックして、特定のポートに対するプリンシパルの条件付きアクセス権の付与を完了します。

gcloud

  1. gcloud CLI workstations 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
    
  2. プリンシパルに条件付きアクセス権を付与するには、前の手順でダウンロードしたポリシー ファイルに次の条件式(強調表示されている部分)を追加します。

    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.com
    • PRINCIPAL: ワークステーションのポート WORKSTATIONS_PORT のアクセス権を共有するプリンシパル。例: baklavainthebalkans@gmail.com
    • WORKSTATIONS_PORT: デモサーバーがリッスンしているワークステーションのポート。
  3. gcloud CLI workstations 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: ワークステーションのデフォルトのドメイン名。

プリンシパルは、アクセス権のないワークステーションの他のポートにアクセスできません。