Resolva problemas de erros de políticas da organização para contas de serviço

O serviço de políticas de organização tem várias restrições predefinidas e geridas que podem afetar as contas de serviço na sua organização. Esta página ajuda a compreender que erros essas políticas de organização geram e os passos que pode realizar para resolver esses erros.

Funções necessárias

Para receber as autorizações de que precisa para resolver problemas de políticas de organização, peça ao seu administrador para lhe conceder a função IAM de administrador de políticas de organização (roles/orgpolicy.policyAdmin) na organização. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Resolva problemas de criação de chaves de contas de serviço desativadas

Se a restrição iam.disableServiceAccountKeyCreation for aplicada à sua organização, não pode criar chaves para nenhuma conta de serviço na sua organização. Para mais informações sobre esta restrição, consulte o artigo Desative a criação de chaves de contas de serviço.

Erro de criação de chave

Se tentar criar uma chave de conta de serviço, mas a ação for bloqueada pela restrição iam.disableServiceAccountKeyCreation, recebe a seguinte mensagem de erro:

Consola

Na Trusted Cloud consola, é apresentada uma caixa de diálogo com o título A criação de chaves de conta de serviço está desativada. A caixa de diálogo indica que a restrição iam.disableServiceAccountKeyCreation é aplicada na sua organização.

gcloud

ERROR: (gcloud.iam.service-accounts.keys.create) FAILED_PRECONDITION: Key
creation is not allowed on this service account.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: Key creation is not allowed on this service account.
    subject: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID@PROJECT_ID.?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.
    type: constraints/iam.disableServiceAccountKeyCreation

REST

{
  "error": {
    "code": 400,
    "message": "Key creation is not allowed on this service account.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/iam.disableServiceAccountKeyCreation",
            "subject": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID@PROJECT_ID.?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.",
            "description": "Key creation is not allowed on this service account."
          }
        ]
      }
    ]
  }
}

Resolução recomendada para o erro de criação da chave da conta de serviço

Se uma política da organização impedir a criação de uma chave de conta de serviço, recomendamos que faça o seguinte:

  1. Avalie se é necessária uma chave de conta de serviço.

    Não recomendamos a utilização de chaves de contas de serviço para autenticação. Isto deve-se ao facto de as chaves de contas de serviço poderem tornar-se um risco de segurança se não forem geridas corretamente, o que aumenta a sua vulnerabilidade a ameaças como a fuga de credenciais, o escalamento de privilégios, a divulgação de informações e a não repudiação.

    Na maioria dos casos, deve usar uma alternativa mais segura para fazer a autenticação em vez de usar uma chave de conta de serviço.

  2. Se precisar de uma chave de conta de serviço para o seu exemplo de utilização, desative a restrição iam.disableServiceAccountKeyCreation para o seu projeto.

Para desativar a restrição da política da organização, desative a aplicação da restrição ou isente o seu projeto da aplicação:

  • Para desativar a aplicação da restrição para toda a sua organização, faça o seguinte:

    1. Certifique-se de que tem a função de administrador da política da organização (roles/orgpolicy.policyAdmin) ao nível da organização. Esta função só está disponível para concessão em organizações e não aparece na lista de funções para projetos.

      Para saber como conceder funções ao nível da organização, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    2. Na Trusted Cloud consola, aceda à página Políticas de organização.

      Aceda às políticas da organização

    3. No seletor de projetos, selecione a organização para a qual quer desativar a restrição iam.disableServiceAccountKeyCreation.

    4. No campo Filtro, introduza iam.disableServiceAccountKeyCreation. Em seguida, na lista de políticas, clique em Desativar a criação de chaves de contas de serviço.

    5. Clique em Gerir política.

    6. Na secção Origem da política, certifique-se de que a opção Substituir política do elemento principal está selecionada.

    7. Em Aplicação, desative a aplicação desta restrição da política da organização.

    8. Clique em Definir política.

  • Para isentar o seu projeto da aplicação, faça o seguinte:

    1. Certifique-se de que tem a função de administrador de etiquetas (roles/resourcemanager.tagAdmin) e a função de administrador da política da organização (roles/orgpolicy.policyAdmin) ao nível da organização. Para saber como conceder funções ao nível da organização, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
    2. Ao nível da organização, crie uma chave de etiqueta e um valor de etiqueta que vai usar para definir se um recurso deve estar isento da política da organização. Recomendamos que crie uma etiqueta com a chave disableServiceAccountKeyCreation e os valores enforced e not_enforced.

      Para saber como criar chaves de etiquetas e valores de etiquetas, consulte o artigo Criar e definir uma nova etiqueta.

    3. Anexe a etiqueta disableServiceAccountKeyCreation à organização e defina o respetivo valor como enforced. Todos os recursos na organização herdam este valor da etiqueta, a menos que seja substituído por um valor da etiqueta diferente.

      Para saber como anexar etiquetas a recursos, consulte o artigo Anexar etiquetas a recursos.

    4. Para cada conta de serviço que quer isentar da política da organização, anexe a etiqueta disableServiceAccountKeyCreation e defina o respetivo valor como not_enforced. A definição de um valor de etiqueta para uma conta de serviço desta forma substitui o valor de etiqueta herdado da organização.
    5. Crie ou atualize a política da organização que impede a criação de chaves de contas de serviço para que não aplique a restrição aos recursos isentos. Esta política deve ter as seguintes regras:

      • Configure a restrição iam.disableServiceAccountKeyCreation para não ser aplicada a recursos com a etiqueta disableServiceAccountKeyCreation: not_enforced. A condição nesta regra deve ter o seguinte aspeto:

        "resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
        
      • Configure a restrição iam.disableServiceAccountKeyCreation para ser aplicada a todos os outros recursos.

Resolva problemas de criação de contas de serviço desativadas

Se a restrição iam.disableServiceAccountCreation for aplicada à sua organização, não pode criar contas de serviço em nenhum projeto da sua organização. Para mais informações acerca desta restrição, consulte o artigo Desative a criação de contas de serviço.

Erro de criação da conta de serviço

Se tentar criar uma conta de serviço, mas a ação for bloqueada pela restrição iam.disableServiceAccountCreation, recebe a seguinte mensagem de erro:

Consola

Na Trusted Cloud consola, é apresentada uma caixa de diálogo com o título Falha na criação da conta de serviço. A caixa de diálogo indica: A ação tentada falhou. Tente novamente.

gcloud

ERROR: (gcloud.iam.service-accounts.create) FAILED_PRECONDITION: Service account
creation is not allowed on this project.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: Service account creation is not allowed on this project.
    subject: projects/PROJECT_ID/serviceAccounts/?configvalue=
    type: constraints/iam.disableServiceAccountCreation

REST

{
  "error": {
    "code": 400,
    "message": "Service account creation is not allowed on this project.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/iam.disableServiceAccountCreation",
            "subject": "projects/PROJECT_ID/serviceAccounts/?configvalue=",
            "description": "Service account creation is not allowed on this project."
          }
        ]
      }
    ]
  }
}

Resolução recomendada para o erro de criação da conta de serviço

Se uma política da organização impedir a criação de uma conta de serviço, recomendamos que faça o seguinte:

  1. Avalie se é necessária uma conta de serviço.

    Reveja o artigo Escolha quando usar contas de serviço para confirmar se precisa de uma conta de serviço para o seu exemplo de utilização.

  2. Se precisar de uma conta de serviço para o seu exemplo de utilização, desative a restrição iam.disableServiceAccountCreation para o seu projeto.

Para desativar a restrição da política da organização, desative a aplicação da restrição ou isente o seu projeto da aplicação:

  • Para desativar a aplicação da restrição para toda a sua organização, faça o seguinte:

    1. Certifique-se de que tem a função de administrador da política da organização (roles/orgpolicy.policyAdmin) ao nível da organização. Esta função só está disponível para concessão em organizações e não aparece na lista de funções para projetos.

      Para saber como conceder funções ao nível da organização, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    2. Na Trusted Cloud consola, aceda à página Políticas de organização.

      Aceda às políticas da organização

    3. No seletor de projetos, selecione a organização para a qual quer desativar a restrição iam.disableServiceAccountCreation.

    4. No campo Filtro, introduza iam.disableServiceAccountCreation. Em seguida, na lista de políticas, clique em Desativar criação de contas de serviço.

    5. Clique em Gerir política.

    6. Na secção Origem da política, certifique-se de que a opção Substituir política do elemento principal está selecionada.

    7. Em Aplicação, desative a aplicação desta restrição da política da organização.

    8. Clique em Definir política.

  • Para isentar o seu projeto da aplicação, faça o seguinte:

    1. Certifique-se de que tem a função de administrador de etiquetas (roles/resourcemanager.tagAdmin) e a função de administrador da política da organização (roles/orgpolicy.policyAdmin) ao nível da organização. Para saber como conceder funções ao nível da organização, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
    2. Ao nível da organização, crie uma chave de etiqueta e um valor de etiqueta que vai usar para definir se um recurso deve estar isento da política da organização. Recomendamos que crie uma etiqueta com a chave disableServiceAccountCreation e os valores enforced e not_enforced.

      Para saber como criar chaves de etiquetas e valores de etiquetas, consulte o artigo Criar e definir uma nova etiqueta.

    3. Anexe a etiqueta disableServiceAccountCreation à organização e defina o respetivo valor como enforced. Todos os recursos na organização herdam este valor da etiqueta, a menos que seja substituído por um valor da etiqueta diferente.

      Para saber como anexar etiquetas a recursos, consulte o artigo Anexar etiquetas a recursos.

    4. Para cada projeto ou pasta que quer isentar da política da organização, anexe a etiqueta disableServiceAccountCreation e defina o respetivo valor como not_enforced. Definir um valor de etiqueta para um projeto ou uma pasta desta forma substitui o valor de etiqueta herdado da organização.
    5. Crie ou atualize a política da organização que impede a criação de contas de serviço para que não aplique a restrição aos recursos isentos. Esta política deve ter as seguintes regras:

      • Configure a restrição iam.disableServiceAccountCreation para não ser aplicada a recursos com a etiqueta disableServiceAccountCreation: not_enforced. A condição nesta regra deve ter o seguinte aspeto:

        "resource.matchTag('ORGANIZATION_ID/disableServiceAccountCreation', 'not_enforced')"
        
      • Configure a restrição iam.disableServiceAccountCreation para ser aplicada a todos os outros recursos.

Resolva problemas de atribuição de funções a contas de serviço predefinidas

A conta de serviço predefinida do Compute Engine é criada automaticamente no seu projeto quando usa determinados Trusted Cloud serviços. Esta conta de serviço tem o identificador PROJECT_NUMBER-compute@.

Todas as contas de serviço predefinidas recebem automaticamente a função de Editor (roles/editor) quando são criadas, a menos que a restrição da política da organização iam.automaticIamGrantsForDefaultServiceAccounts seja aplicada ao seu projeto. Esta restrição impede que a função de editor seja concedida automaticamente às contas de serviço predefinidas.

Erro ao conceder funções básicas a contas de serviço

Se a restrição iam.automaticIamGrantsForDefaultServiceAccounts for aplicada ao seu projeto, as cargas de trabalho no seu projeto que usam as contas de serviço predefinidas podem encontrar erros de autorização insuficientes. Para saber que funções atribuir a uma conta de serviço predefinida, consulte a Resolução recomendada para atribuir funções a contas de serviço predefinidas.

A restrição iam.automaticIamGrantsForDefaultServiceAccounts não causa erros por si só. No entanto, devido a esta restrição, é possível que uma carga de trabalho que use a conta de serviço predefinida não tenha as autorizações de que precisa.

Resolução recomendada para conceder funções a contas de serviço predefinidas

Se uma política da organização impedir que atribua a função de editor ou proprietário a uma conta de serviço predefinida, deve encontrar uma função menos permissiva para atribuir à conta de serviço. A função de que a conta de serviço precisa depende do serviço que está a usar e das tarefas que quer realizar.

Reveja a tabela seguinte para determinar a função a conceder à conta de serviço predefinida do Compute Engine, consoante o serviço que está a usar:

Serviço Conta de serviço predefinida Função a conceder
Compute Engine Conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@)

As funções de que a conta de serviço predefinida precisa dependem da tarefa que quer realizar. Para saber que funções são necessárias, reveja a documentação da tarefa que quer realizar ou reveja o artigo Encontre as funções predefinidas certas.

Ao decidir que função atribuir, siga as práticas recomendadas descritas na página Contas de serviço na documentação do Compute Engine.

Cloud Build Conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@) Função de conta de serviço do Cloud Build (roles/cloudbuild.builds.builder)
Cloud Deploy Conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@) Para ver as funções a conceder a esta conta de serviço, encontre o início rápido do Cloud Deploy que corresponde ao seu exemplo de utilização e, em seguida, conceda as funções descritas nesse início rápido. Para ver uma lista de inícios rápidos do Cloud Deploy, consulte o artigo Inícios rápidos na documentação do Cloud Deploy.
Funções do Cloud Run e Cloud Functions Conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@)

Para implementar funções: função de conta do Cloud Build (roles/cloudbuild.builds.builder)

Para mais informações, consulte o artigo Conta de serviço personalizada para o Cloud Build.

Cloud Run Conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@)

As funções de que a conta de serviço predefinida precisa dependem da tarefa que quer realizar. Para saber que funções são necessárias, reveja a documentação da tarefa que quer realizar ou reveja o artigo Encontre as funções predefinidas certas.

Para ver detalhes sobre as funções do Cloud Run, consulte o artigo Controlo de acesso com a IAM na documentação do Cloud Run.

Google Kubernetes Engine Conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@)

Função de conta de serviço do nó predefinido do Kubernetes Engine (roles/container.defaultNodeServiceAccount)

Para mais informações, consulte o artigo Use contas de serviço IAM com o menor número possível de privilégios.

Workflows Conta de serviço predefinida do Compute Engine (PROJECT_NUMBER-compute@)

As funções de que a conta de serviço predefinida precisa dependem da tarefa que quer realizar. Para saber que funções são necessárias, reveja a documentação da tarefa que quer realizar ou reveja o artigo Encontre as funções predefinidas certas.

Siga as práticas recomendadas descritas na página Conceda uma autorização de fluxo de trabalho para aceder a recursos Trusted Cloud na documentação dos fluxos de trabalho.