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 obter as autorizações de que
precisa para resolver problemas de políticas de organização,
peça ao seu administrador que lhe conceda 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 Google 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.iam.gserviceaccount.com?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.iam.gserviceaccount.com
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.iam.gserviceaccount.com?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.iam.gserviceaccount.com",
"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:
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.
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:
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.
Na Google Cloud consola, aceda à página Políticas da organização.
No seletor de projetos, selecione a organização para a qual quer desativar a restrição
iam.disableServiceAccountKeyCreation
.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.Clique em Gerir política.
Na secção Origem da política, certifique-se de que a opção Substituir política do elemento principal está selecionada.
Em Aplicação, desative a aplicação desta restrição da política da organização.
Clique em Definir política.
Para isentar o seu projeto da aplicação, faça o seguinte:
-
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. -
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 valoresenforced
enot_enforced
.Para saber como criar chaves de etiquetas e valores de etiquetas, consulte o artigo Criar e definir uma nova etiqueta.
-
Anexe a etiqueta
disableServiceAccountKeyCreation
à organização e defina o respetivo valor comoenforced
. 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.
-
Para cada conta de serviço que quer isentar da política da organização, anexe a etiqueta
disableServiceAccountKeyCreation
e defina o respetivo valor comonot_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. -
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 etiquetadisableServiceAccountKeyCreation: 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.
-
-
Certifique-se de que tem a função de administrador de etiquetas (
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 Google 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:
Avalie se é necessária uma conta de serviço.
Reveja o artigo Escolha quando usar contas de serviço para confirmar que é necessária uma conta de serviço para o seu exemplo de utilização.
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:
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.
Na Google Cloud consola, aceda à página Políticas da organização.
No seletor de projetos, selecione a organização para a qual quer desativar a restrição
iam.disableServiceAccountCreation
.No campo Filtro, introduza
iam.disableServiceAccountCreation
. Em seguida, na lista de políticas, clique em Desativar criação de contas de serviço.Clique em Gerir política.
Na secção Origem da política, certifique-se de que a opção Substituir política do elemento principal está selecionada.
Em Aplicação, desative a aplicação desta restrição da política da organização.
Clique em Definir política.
Para isentar o seu projeto da aplicação, faça o seguinte:
-
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. -
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 valoresenforced
enot_enforced
.Para saber como criar chaves de etiquetas e valores de etiquetas, consulte o artigo Criar e definir uma nova etiqueta.
-
Anexe a etiqueta
disableServiceAccountCreation
à organização e defina o respetivo valor comoenforced
. 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.
-
Para cada projeto ou pasta que quer isentar da política da organização, anexe a etiqueta
disableServiceAccountCreation
e defina o respetivo valor comonot_enforced
. Definir um valor de etiqueta para um projeto ou uma pasta desta forma substitui o valor de etiqueta herdado da organização. -
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 etiquetadisableServiceAccountCreation: 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.
-
-
Certifique-se de que tem a função de administrador de etiquetas (
Resolva problemas de atribuição de funções a contas de serviço predefinidas
As contas de serviço predefinidas são criadas automaticamente quando usa determinados Google Cloud serviços. Têm os seguintes identificadores:
- Conta de serviço predefinida do serviço do App Engine:
PROJECT_ID@appspot.gserviceaccount.com
- Conta de serviço predefinida do Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Todas as contas de serviço predefinidas recebem automaticamente a função de Editor
(roles/editor
) quando são criadas, a menos que esse comportamento seja desativado por uma política da organização. Existem duas restrições da política da organização que impedem a concessão da função de editor às contas de serviço predefinidas:
iam.automaticIamGrantsForDefaultServiceAccounts
: uma restrição predefinida que impede a concessão automática de funções às contas de serviço predefinidas. Esta restrição não impede que atribua posteriormente a função de editor às contas de serviço predefinidas.constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
: Uma restrição gerida que impede que as funções Editor e Proprietário (roles/owner
) sejam concedidas às contas de serviço predefinidas.
Erro ao conceder funções básicas a contas de serviço
Se a restrição iam.automaticIamGrantsForDefaultServiceAccounts
ou a restrição constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
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 conceder a uma conta de serviço predefinida, consulte a
Resolução recomendada para conceder 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.
Além disso, se a restrição
constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
for aplicada ao seu projeto, é apresentada uma mensagem de erro como a seguinte se tentar conceder a função de proprietário ou editor a uma conta de serviço predefinida:
Consola
Na Google Cloud consola, é apresentada uma caixa de diálogo com o título Falha na atualização da política de IAM. A caixa de diálogo indica que as alterações que está a tentar fazer à sua política de IAM foram restritas pelo administrador da política da sua organização e, em seguida, apresenta as restrições que bloqueiam a atualização. As restrições
indicadas incluem a restrição customConstraints/custom.cantGrantProjectIamAdmin
.
gcloud
ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: Operation denied by
org policy on resource 'RESOURCE_ID':
["constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts":
"When this constraint is enforced, it prevents anyone from granting the Editor
role (roles/editor) or the Owner role (roles/owner) to the Compute Engine and
App Engine default service accounts, at any time. To learn more about default
service accounts, see
https://cloud.google.com/iam/help/service-accounts/default. Enforcing this
constraint prevents the default service accounts from automatically being
granted the Editor role (roles/editor). This might cause permission issues for
services that use these service accounts. To learn which roles to grant to each
service account, see
https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default."].
REST
{
"error": {
"code": 400,
"message": "Operation denied by org policy on resource
'RESOURCE_ID':
[\"constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts\":
\"When this constraint is enforced, it prevents anyone from granting the
Editor role (roles/editor) or the Owner role (roles/owner) to the Compute
Engine and App Engine default service accounts, at any time. To learn more
about default service accounts, see
https://cloud.google.com/iam/help/service-accounts/default.\n Enforcing this
constraint prevents the default service accounts from automatically being
granted the Editor role (roles/editor). This might cause permission issues
for services that use these service accounts. To learn which roles to grant
to each service account, see
https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default.\"].",
"status": "FAILED_PRECONDITION",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "CUSTOM_ORG_POLICY_VIOLATION",
"domain": "googleapis.com",
"metadata": {
"customConstraints": "constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts",
"resource": "projects/PROJECT_ID"
}
}
]
}
}
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 que função atribuir a que conta de serviço predefinida, consoante o serviço que está a usar:
Serviço | Conta de serviço predefinida | Função a conceder |
---|---|---|
App Engine |
Conta de serviço predefinida do App Engine (PROJECT_ID@appspot.gserviceaccount.com )
|
Função de conta do Cloud Build (roles/cloudbuild.builds.builder )
|
Compute Engine |
Conta de serviço predefinida do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
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@developer.gserviceaccount.com )
|
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@developer.gserviceaccount.com )
|
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@developer.gserviceaccount.com )
|
Para implementar funções: função de conta do Cloud Build ( 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@developer.gserviceaccount.com )
|
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@developer.gserviceaccount.com )
|
Função de conta de serviço do nó predefinido do Kubernetes Engine ( 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@developer.gserviceaccount.com )
|
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 Google Cloud na documentação dos fluxos de trabalho. |