Criar um papel personalizado

Nesta página, descrevemos como criar e gerenciar papéis personalizados no Google Distributed Cloud (GDC) isolado por air-gap. Com os papéis personalizados, é possível gerenciar o acesso além dos conjuntos de permissões padrão disponíveis em papéis predefinidos, permitindo configurar permissões para atender aos seus critérios específicos.

Os papéis personalizados seguem o princípio de privilégio mínimo e são úteis para conceder o menor acesso necessário para tarefas sensíveis, mitigando riscos de segurança e evitando conflitos de interesse.

Ao criar um papel personalizado, você pode:

  • Defina o escopo do acesso: escolha aplicar permissões em toda a organização, em todos os projetos ou restringir a projetos específicos.
  • Personalize o acesso granular: selecione uma ou mais permissões já disponíveis em papéis predefinidos para personalizar o acesso a tarefas ou responsabilidades específicas.

Esta página é destinada a públicos-alvo no grupo de administradores da plataforma, como administradores de TI ou engenheiros de segurança, que querem gerenciar com segurança o acesso aos recursos organizacionais. Para mais informações, consulte Públicos-alvo da documentação isolada do GDC.

Acesse Descrições de papéis predefinidos e Definições de papéis para mais informações sobre papéis.

Antes de começar

O acesso a papéis personalizados é gerenciado nos níveis da organização e do projeto. O acesso só pode ser concedido na mesma organização ou projeto em que o papel personalizado foi criado.

Para ter as permissões necessárias para criar e gerenciar papéis personalizados, peça ao administrador para conceder a você um dos seguintes papéis:

  • Administrador da organização com função personalizada: cria e gerencia funções personalizadas em uma organização ou projeto. Esse papel inclui a capacidade de atualizar, listar, visualizar, desativar e excluir papéis personalizados.

    Os usuários administradores do IAM da organização podem conceder esse papel.

  • Administrador de projetos com função personalizada: cria e gerencia funções personalizadas em um projeto. Esse papel inclui a capacidade de atualizar, listar, visualizar, desativar e excluir papéis personalizados.

    Os usuários administradores do IAM do projeto podem conceder esse papel.

Saiba mais sobre como atribuir permissões de função para organizações e projetos.

Conferir papéis e permissões

Um papel personalizado é formado por um grupo de permissões que podem ser atribuídas aos usuários. Para criar uma função personalizada, selecione permissões de funções predefinidas e combine-as para atender às suas necessidades. As permissões que podem ser incluídas em um papel personalizado dependem do escopo em que ele é criado: organização ou projeto.

Esta seção explica como listar as funções disponíveis (predefinidas e personalizadas) e conferir as permissões nelas. Você pode usar essas informações para fazer o seguinte:

  • Identificar permissões para novas funções personalizadas: descubra as strings de permissão específicas necessárias para a flag --permissions ao usar a CLI gdcloud para criar uma função personalizada.
  • Analise as funções atuais: examine as permissões associadas a qualquer função predefinida ou personalizada no escopo selecionado (organização ou projeto).

Liste os papéis e examine as permissões deles usando o console do GDC ou a CLI gdcloud:

Console

  1. Faça login no console do GDC.
  2. No seletor de projetos, selecione a organização ou o projeto em que você quer ver os papéis.
  3. No menu de navegação, clique em Identidade e acesso > Papéis.

    Uma lista de funções predefinidas e personalizadas disponíveis aparece.

  4. Clique no nome de uma função para conferir os detalhes dela, incluindo as permissões atribuídas.

    As permissões listadas para papéis predefinidos no escopo atual (organização ou projeto) são as que podem ser incluídas em um novo papel personalizado.

gdcloud

  1. Verifique se a CLI gdcloud está instalada. Para mais informações, consulte a página Visão geral da CLI gdcloud.
  2. Liste as funções disponíveis:

    gdcloud iam roles list ROLE_TYPE \
      --project=PROJECT
    

    Substitua:

    • ROLE_TYPE: o tipo de papéis a serem listados. Os valores válidos são predefined, custom ou all.
    • PROJECT: o namespace do projeto em que você quer ver as funções. Omita a flag --project para funções no escopo da organização.
  3. Veja as permissões específicas em um papel:

    gdcloud iam roles describe ROLE_NAME \
      --project=PROJECT
    

    Substitua:

    • ROLE_NAME: o nome do recurso do Kubernetes da função.
    • PROJECT: o namespace do projeto em que você quer ver as permissões de função. Omita a flag --project para funções no escopo da organização.

Consulte gdcloud iam roles list e gdcloud iam roles describe para mais detalhes sobre comandos e exemplos de uso.

Criar um papel personalizado

Crie um papel personalizado agrupando permissões de papéis predefinidos. Os papéis personalizados herdam os recursos multizona do IAM dos papéis predefinidos em que são criados. Depois de criar uma função personalizada, você pode conceder acesso aos usuários.

Crie uma função personalizada usando o console do GDC, a CLI gdcloud ou a API:

Console

  1. Faça login no console do GDC.
  2. No seletor de projetos, selecione a organização ou o projeto em que você quer criar um papel personalizado.
  3. No menu de navegação, clique em Identidade e acesso > Papéis.
  4. Clique em Criar função personalizada.
  5. No campo Título, insira o título da sua função personalizada.
  6. No campo Descrição, forneça uma descrição da finalidade da função personalizada.
  7. No campo ID, insira o identificador exclusivo da função personalizada.

    Os IDs de papéis personalizados podem ter até 10 caracteres alfanuméricos minúsculos e não podem ser alterados após a criação do papel.

  8. Selecione um Estágio de lançamento.

  9. Selecione o escopo da função personalizada.

    Se você selecionar Organização, a função personalizada será aplicada a todos os recursos da organização. Se você selecionar Projetos, a função personalizada será aplicada a todos os projetos atuais e futuros da organização. Selecione Limitar aos projetos selecionados se quiser especificar quais projetos podem acessar a função personalizada.

  10. Clique em Adicionar permissões.

  11. Marque a caixa de seleção ao lado de uma ou mais permissões compatíveis que você quer atribuir à função personalizada.

    As permissões disponíveis são limitadas ao escopo selecionado. Se você mudar o escopo depois de adicionar permissões, confirme se todas as permissões atribuídas anteriormente foram redefinidas.

  12. Clique em Salvar.

  13. Clique em Criar.

    O novo papel personalizado aparece na página Papéis.

gdcloud

  1. Verifique se a CLI gdcloud está instalada. Para mais informações, consulte a página Visão geral da CLI gdcloud.
  2. Crie um papel personalizado:

    gdcloud iam roles create ROLE_ID \
      --title=TITLE \
      --description=DESCRIPTION \
      --permissions=PERMISSIONS
      --stage=LAUNCH_STAGE
    

    Substitua:

    • ROLE_ID: o identificador exclusivo da sua função personalizada. Os IDs de função personalizada podem ter até 10 caracteres alfanuméricos minúsculos e conter hifens. Os IDs de função personalizada não podem ser alterados depois da criação da função.
    • TITLE: um título fácil de usar para a função personalizada.
    • DESCRIPTION: uma descrição da finalidade da função personalizada.
    • PERMISSIONS: uma lista separada por vírgulas de permissões que você quer conceder para o papel personalizado.

      Para saber como encontrar as strings de permissão corretas, consulte Ver papéis e permissões. Cada string de permissão precisa ser formatada de acordo com as orientações em gdcloud iam roles create, em que iamRoleName é o nome do recurso do Kubernetes do papel predefinido que contém a permissão. É possível encontrar o nome do recurso do Kubernetes de uma função na página Definições de função ou usando o comando gdcloud iam roles list.

    • LAUNCH_STAGE: opcional. A etapa de lançamento do papel personalizado. Os valores válidos são ALPHA, BETA, GA ou DISABLED. Se essa flag for omitida, o padrão será ALPHA.

    Consulte gdcloud iam roles create para ver uma lista completa de flags obrigatórias e opcionais, além de exemplos de uso.

    Outra opção é definir o papel personalizado em um arquivo YAML e usar a flag --file:

    gdcloud iam roles create ROLE_ID --file=YAML_FILE_PATH
    

    Substitua YAML_FILE_PATH pelo caminho para o arquivo YAML que contém as flags obrigatórias e opcionais. Se você usar a flag --file, todas as outras flags, como --title, --description e --permissions, serão ignoradas.

API

Crie e aplique o recurso personalizado CustomRole usando kubectl:

kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
  name: ROLE_NAME
  namespace: NAMESPACE
spec:
  metadata:
    description: DESCRIPTION
    id: ROLE_ID
    scope: SCOPE
    stage: LAUNCH_STAGE
    title: TITLE
  RULES_TYPE:
  - RULES_LIST
EOF

Substitua:

  • ROLE_NAME: o nome do recurso do Kubernetes da função.
  • NAMESPACE: o namespace da função personalizada. Use platform para papéis no escopo da organização e para vários projetos. Use o namespace do projeto (como my-project) para papéis no escopo do projeto e projetos únicos.
  • DESCRIPTION: uma descrição da finalidade da função personalizada.
  • ROLE_ID: o identificador exclusivo da sua função personalizada. Os IDs de função personalizada podem ter até 10 caracteres alfanuméricos minúsculos e conter hifens. Os IDs de função personalizada não podem ser alterados após a criação da função.
  • SCOPE: use organization para funções criadas no namespace platform. Use project para papéis criados em um namespace de projeto.
  • LAUNCH_STAGE: opcional. A etapa de lançamento do papel personalizado. Os valores válidos são ALPHA, BETA, GA ou DISABLED. Se este campo for omitido, o padrão será ALPHA.
  • TITLE: um título fácil de usar para a função personalizada.
  • RULES_TYPE: esse campo define o escopo das regras. Substitua por globalRules (para permissões na API global) ou zonalRules (para permissões na API zonal). Não é possível usar os dois no mesmo recurso CustomRole.
  • RULES_LIST: uma lista com recuo de objetos de regra padrão do RBAC do Kubernetes. Cada objeto na lista concede permissões. Para determinar os apiGroups, resources e verbs corretos, examine as permissões nos papéis predefinidos usando gdcloud iam roles describe, conforme mostrado em Ver papéis e permissões.

    O exemplo a seguir mostra a estrutura de um único item em um objeto globalRules:

    globalRules:
    - apiGroups: ["storage.global.gdc.goog"]
      resources: ["buckettypes"]
      verbs: ["get", "list", "watch"]
    

    É possível incluir vários itens na lista, cada um definindo um conjunto diferente de permissões.

Gerenciar uma função personalizada

Você é responsável por gerenciar o ciclo de vida das suas funções personalizadas. Quando o Distributed Cloud adiciona novas permissões, recursos ou serviços, ele atualiza os papéis predefinidos. Atualizações como a exclusão de um papel predefinido ou a remoção de permissões de um papel predefinido podem tornar não funcionais os papéis personalizados que dependem dessas permissões. É preciso monitorar essas atualizações e ajustar manualmente os papéis personalizados afetados para garantir que eles continuem funcionando como esperado.

É possível editar, desativar ou excluir uma função personalizada, mas não é possível fazer isso com uma função predefinida. Para ver uma lista de todos os papéis e as permissões específicas deles, consulte Ver papéis e permissões.

Editar uma função personalizada

Edite uma função personalizada usando o console do GDC, a CLI gdcloud ou a API:

Console

  1. Faça login no console do GDC.
  2. No seletor de projetos, selecione a organização ou o projeto em que você quer editar um papel personalizado.
  3. No menu de navegação, clique em Identidade e acesso > Papéis.
  4. Na lista de papéis, selecione o papel personalizado que você quer editar.
  5. Na página de detalhes da função personalizada, clique em Editar.
  6. Edite os detalhes do papel personalizado, como título, descrição, ID ou estágio de lançamento.
  7. Se quiser, adicione ou remova permissões atribuídas.
    1. Clique em Adicionar permissões para selecionar na lista de permissões disponíveis.
    2. Para remover uma permissão atribuída, marque a caixa de seleção ao lado da permissão que você quer remover e clique em Remover.
  8. Clique em Salvar.

    Uma mensagem aparece confirmando as mudanças salvas.

gdcloud

  1. Verifique se a CLI gdcloud está instalada. Para mais informações, consulte a página Visão geral da CLI gdcloud.
  2. Para editar uma função personalizada:

    gdcloud iam roles update ROLE_ID \
      --title=TITLE \
      --description=DESCRIPTION \
      --permissions=PERMISSIONS
      --stage=LAUNCH_STAGE
    

    Substitua:

    • ROLE_ID: o identificador exclusivo da sua função personalizada.
    • TITLE: um título fácil de usar para a função personalizada.
    • DESCRIPTION: uma descrição da finalidade da função personalizada.
    • PERMISSIONS: uma lista separada por vírgulas de permissões que você quer conceder para o papel personalizado.

      Para saber como encontrar as strings de permissão corretas, consulte Ver papéis e permissões. Cada string de permissão precisa ser formatada de acordo com as orientações em gdcloud iam roles create, em que iamRoleName é o nome do recurso do Kubernetes do papel predefinido que contém a permissão. É possível encontrar o nome do recurso do Kubernetes de uma função na página Definições de função ou usando o comando gdcloud iam roles list.

    • LAUNCH_STAGE: opcional. A etapa de lançamento do papel personalizado. Os valores válidos são ALPHA, BETA, GA ou DISABLED. Se essa flag for omitida, o padrão será ALPHA.

    Consulte gdcloud iam roles update para ver uma lista completa de flags obrigatórias e opcionais, além de exemplos de uso.

    Como alternativa, atualize o papel personalizado no arquivo YAML e use a flag --file:

    gdcloud iam roles update ROLE_ID --file=YAML_FILE_PATH
    

    Substitua YAML_FILE_PATH pelo caminho para o arquivo YAML que contém as flags obrigatórias e opcionais atualizadas. Se você usar a flag --file, todas as outras flags, como --title, --description e --permissions, serão ignoradas.

API

Edite um recurso personalizado CustomRole usando kubectl:

kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
  name: ROLE_NAME
  namespace: NAMESPACE
spec:
  metadata:
    description: DESCRIPTION
    id: ROLE_ID
    scope: SCOPE
    stage: LAUNCH_STAGE
    title: TITLE
  RULES_TYPE:
  - RULES_LIST
EOF

Substitua:

  • ROLE_NAME: o nome do recurso do Kubernetes da função.
  • NAMESPACE: o namespace da função personalizada. Use platform para papéis no escopo da organização e para vários projetos. Use o namespace do projeto (como my-project) para papéis no escopo do projeto e projetos únicos.
  • DESCRIPTION: uma descrição da finalidade da função personalizada.
  • ROLE_ID: o identificador exclusivo da sua função personalizada. Os IDs de função personalizada podem ter até 10 caracteres alfanuméricos minúsculos e conter hifens. Os IDs de função personalizada não podem ser alterados após a criação da função.
  • SCOPE: use organization para funções criadas no namespace platform. Use project para papéis criados em um namespace de projeto.
  • LAUNCH_STAGE: opcional. A etapa de lançamento do papel personalizado. Os valores válidos são ALPHA, BETA, GA ou DISABLED. Se este campo for omitido, o padrão será ALPHA.
  • TITLE: um título fácil de usar para a função personalizada.
  • RULES_TYPE: esse campo define o escopo das regras. Substitua por globalRules (para permissões na API global) ou zonalRules (para permissões na API zonal). Não é possível usar os dois no mesmo recurso CustomRole.
  • RULES_LIST: uma lista com recuo de objetos de regra padrão do RBAC do Kubernetes. Cada objeto na lista concede permissões. Para determinar os apiGroups, resources e verbs corretos, examine as permissões nos papéis predefinidos usando gdcloud iam roles describe, conforme mostrado em Ver papéis e permissões.

    O exemplo a seguir mostra a estrutura de um único item em um objeto globalRules:

    globalRules:
    - apiGroups: ["storage.global.gdc.goog"]
      resources: ["buckettypes"]
      verbs: ["get", "list", "watch"]
    

    É possível incluir vários itens na lista, cada um definindo um conjunto diferente de permissões.

desativar um papel personalizado

As funções personalizadas desativadas permanecem na sua lista de funções e ainda podem ser atribuídas a usuários, mas não têm efeito. É possível reativar a função personalizada a qualquer momento.

Desative uma função personalizada usando o console do GDC, a CLI gdcloud ou a API:

Console

  1. Faça login no console do GDC.
  2. No seletor de projeto, selecione a organização ou o projeto em que você quer desativar um papel personalizado.
  3. No menu de navegação, clique em Identidade e acesso > Papéis.
  4. Na lista de papéis, selecione o papel personalizado que você quer desativar.
  5. Na página de detalhes da função personalizada, clique em Desativar.

gdcloud

  1. Verifique se a CLI gdcloud está instalada. Para mais informações, consulte a página Visão geral da CLI gdcloud.
  2. Desativar um papel personalizado:

    gdcloud iam roles update ROLE_ID --stage=DISABLED
    

    Substitua:

    • ROLE_ID: o identificador exclusivo da sua função personalizada.

    Consulte gdcloud iam roles update para mais informações.

API

Desative um recurso personalizado CustomRole mudando o campo stage para DISABLED. Verifique se todos os outros campos correspondem aos valores atuais da função personalizada que você quer desativar.

kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
  name: ROLE_NAME
  namespace: NAMESPACE
spec:
  metadata:
    description: DESCRIPTION
    id: ROLE_ID
    scope: SCOPE
    stage: DISABLED
    title: TITLE
  RULES_TYPE:
  - RULES_LIST
EOF

Substitua:

  • ROLE_NAME: o nome do recurso do Kubernetes da função.
  • NAMESPACE: o namespace da função personalizada. Use platform para papéis no escopo da organização e para vários projetos. Use o namespace do projeto (como my-project) para papéis no escopo do projeto e projetos únicos.
  • DESCRIPTION: uma descrição da finalidade da função personalizada.
  • ROLE_ID: o identificador exclusivo da sua função personalizada. Os IDs de função personalizada podem ter até 10 caracteres alfanuméricos minúsculos e conter hifens. Os IDs de função personalizada não podem ser alterados após a criação da função.
  • SCOPE: use organization para funções criadas no namespace platform. Use project para papéis criados em um namespace de projeto.
  • TITLE: um título fácil de usar para a função personalizada.
  • RULES_TYPE: esse campo define o escopo das regras. Substitua por globalRules (para permissões na API global) ou zonalRules (para permissões na API zonal). Não é possível usar os dois no mesmo recurso CustomRole.
  • RULES_LIST: uma lista com recuo de objetos de regra padrão do RBAC do Kubernetes. Cada objeto na lista concede permissões. Para determinar os apiGroups, resources e verbs corretos, examine as permissões nos papéis predefinidos usando gdcloud iam roles describe, conforme mostrado em Ver papéis e permissões.

    O exemplo a seguir mostra a estrutura de um único item em um objeto globalRules:

    globalRules:
    - apiGroups: ["storage.global.gdc.goog"]
      resources: ["buckettypes"]
      verbs: ["get", "list", "watch"]
    

    É possível incluir vários itens na lista, cada um definindo um conjunto diferente de permissões.

excluir um papel personalizado

Os papéis excluídos são removidos permanentemente do sistema, mas é possível criar um novo com o mesmo nome.

Exclua uma função personalizada usando a CLI gdcloud ou a API:

gdcloud

  1. Verifique se a CLI gdcloud está instalada. Para mais informações, consulte a página Visão geral da CLI gdcloud.
  2. Excluir uma função personalizada:

    gdcloud iam roles delete ROLE_ID --project=PROJECT
    

    Substitua:

    • ROLE_ID: o identificador exclusivo da sua função personalizada.
    • PROJECT: o namespace do projeto em que você quer excluir a função personalizada. Se a flag --project não for especificada, a função no escopo da organização será excluída.

    Consulte gdcloud iam roles delete para mais informações e exemplos de uso.

API

Exclua um recurso personalizado CustomRole usando kubectl:

kubectl delete -f CUSTOM_ROLE

Substitua CUSTOM_ROLE pelo caminho do seu arquivo YAML CustomRole. Esse é o mesmo arquivo usado para criar ou atualizar a função.