Conceder acesso a portas individuais do Cloud Workstations

É possível usar as condições do IAM para conceder acesso a portas de estações de trabalho individuais. Isso é útil para compartilhar acesso limitado a portas de estações de trabalho individuais. Por exemplo, é possível usar as condições do IAM para conceder acesso a um servidor de demonstração em execução em uma porta de estação de trabalho.

O Cloud Workstations aceita o atributo destination.port do IAM.

Para mais informações sobre as condições do IAM, consulte os seguintes artigos:

Antes de começar

Antes de conceder acesso a portas individuais da estação de trabalho, você precisa ter a função de administrador de políticas do Cloud Workstations (roles/workstations.policyAdmin) na estação de trabalho.

Verificar os papéis do IAM na estação de trabalho

Verifique se você tem os papéis de usuário do Cloud Workstations (roles/workstations.user) e administrador de políticas do Cloud Workstations (roles/workstations.policyAdmin) na estação de trabalho. Caso contrário, peça ao administrador do Cloud Workstations da sua organização para conceder essas funções na estação de trabalho.

Iniciar um servidor de demonstração na estação de trabalho

Inicie e se conecte às suas estações de trabalho usando o guia Iniciar a estação de trabalho. Execute o comando abaixo na estação de trabalho para iniciar um servidor de demonstração em uma porta da estação de trabalho.

python3 -m http.server WORKSTATIONS_PORT

Substitua:

  • WORKSTATIONS_PORT: a porta em que o servidor de demonstração vai ouvir. Por exemplo, use 8081.

Atualizar a política de IAM condicional da estação de trabalho

Para conceder acesso a uma porta de estação de trabalho, use o console do Google Cloud ou o comando iam policies da CLI gcloud.

Console

Para conceder acesso condicional à estação de trabalho:

  1. No console do Google Cloud, acesse a página Cloud Workstations > Workstations.

    Acessar a estação de trabalho

  2. Encontre sua estação de trabalho e clique no menu de opções more_vertMais e selecione Adicionar usuários.

    Adicionar usuários e editar permissões na página **Estação de trabalho**

  3. Para conceder acesso condicional, insira o e-mail do principal. Por exemplo, 222larabrown@gmail.com.

  4. Verifique se a opção Usuário de estações de trabalho do Cloud está selecionada como função.

  5. Atualize a condição do IAM para conceder acesso específico à porta:

    1. Clique em Adicionar condição do IAM.

    2. Especifique um título, como Porta 8081.

    3. Na guia Editor da condição, insira a seguinte condição:

    destination.port == WORKSTATIONS_PORT
    

    Editor de condições do IAM com a condição de porta de destino 8081

    1. Clique em Salvar para conceder acesso condicional à porta específica ao principal.

gcloud

  1. Receba a política do IAM da estação de trabalho usando o comando gcloud CLI workstations get-iam-policy. Esse comando gera a política para o arquivo: /tmp/WORKSTATIONS_NAME.yaml. Se o arquivo existir, ele será substituído.

    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
    

    Substitua:

    • WORKSTATIONS_NAME: o nome da estação de trabalho.
    • WORKSTATIONS_CONFIG_NAME: o nome da configuração da estação de trabalho.
    • WORKSTATIONS_CLUSTER_NAME: o nome do cluster de estações de trabalho.
    • LOCATION: o nome da região do cluster de estações de trabalho.
    • WORKSTATIONS_PROJECT_ID: o ID do projeto do Cloud Workstations que contém sua estação de trabalho.
  2. Para conceder acesso condicional a um principal, atualize o arquivo de política do IAM da estação de trabalho baixada na etapa anterior em: /tmp/WORKSTATIONS_NAME.yaml.

    Exemplo:

    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
    

    Substitua:

    • YOUR_ID: seu próprio ID de login. Por exemplo, 222larabrown@gmail.com.
    • PRINCIPAL: o principal com quem você quer compartilhar o acesso à porta WORKSTATIONS_PORT da estação de trabalho. Por exemplo, baklavainthebalkans@gmail.com.
    • WORKSTATIONS_PORT: a porta da estação de trabalho em que o servidor de demonstração está detectando.
  3. Defina a política do IAM da estação de trabalho usando o comando gcloud CLI workstations set-iam-policy.

    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
    

    Substitua:

    • WORKSTATIONS_NAME: o nome da estação de trabalho.
    • WORKSTATIONS_CONFIG_NAME: o nome da configuração da estação de trabalho.
    • WORKSTATIONS_CLUSTER_NAME: o nome do cluster de estações de trabalho.
    • LOCATION: o nome da região do cluster de estações de trabalho.
    • WORKSTATIONS_PROJECT_ID: o ID do projeto do Cloud Workstations que contém sua estação de trabalho.

Depois que a política do IAM da estação de trabalho for atualizada, o principal poderá acessar a porta especificada da estação de trabalho.

Compartilhar o URL da estação de trabalho

O principal poderá acessar a porta especificada com o seguinte URL da estação de trabalho:

https://WORKSTATIONS_PORT-WORKSTATIONS_NAME.WORKSTATIONS_CLUSTER_NAME.cloudworkstations.dev

Os marcadores de posição representam o seguinte:

  • WORKSTATIONS_PORT: a porta em que o servidor de demonstração está aguardando.
  • WORKSTATIONS_NAME: o nome da estação de trabalho.
  • WORKSTATIONS_CLUSTER_NAME: o identificador de cluster gerado aleatoriamente.
  • cloudworkstations.dev: o nome de domínio padrão de uma estação de trabalho.

O principal não poderá acessar outras portas da estação de trabalho a que não tem acesso.