O serviço de política da organização tem várias restrições predefinidas e gerenciadas que podem afetar as contas de serviço na sua organização. Esta página ajuda você a entender quais erros essas políticas da organização geram e as etapas que você pode seguir para resolvê-los.
Resolver problemas de criação de chave da conta de serviço desativada
Se a restrição iam.disableServiceAccountKeyCreation
for aplicada à sua
organização, não será possível criar chaves para nenhuma conta de serviço na
organização. Para mais informações sobre essa restrição, consulte
Desativar a criação de chaves da conta de serviço.
Erro de criação de chave
Se você tentar criar uma chave de conta de serviço, mas a ação for bloqueada pela restrição iam.disableServiceAccountKeyCreation
, a seguinte mensagem de erro será exibida:
Console
No console do Google Cloud, uma caixa de diálogo aparece com o título A criação de chaves de conta de serviço está desativada. A caixa de diálogo informa 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 o seguinte:
Avalie se uma chave de conta de serviço é necessária.
Não recomendamos o uso de chaves de conta de serviço para autenticação. Isso ocorre porque as chaves da conta de serviço podem se tornar um risco de segurança se não forem gerenciadas corretamente, aumentando sua vulnerabilidade a ameaças, como vazamento de credenciais, escalonamento de privilégios, divulgação de informações e não repúdio.
Na maioria dos casos, é preciso usar uma alternativa mais segura para autenticar em vez de uma chave de conta de serviço.
Se uma chave de conta de serviço for necessária para seu caso de uso, desative a restrição
iam.disableServiceAccountKeyCreation
para o projeto.
Para desativar a restrição de política da organização, desative a aplicação dela ou isente seu projeto da aplicação:
Para desativar a aplicação da restrição em toda a organização, faça o seguinte:
Verifique se você tem o papel de administrador da política da organização (
roles/orgpolicy.policyAdmin
) no nível da organização. Esse papel só está disponível para concessão em organizações e não aparece na lista de papéis para projetos.Para saber como conceder papéis no nível da organização, consulte Gerenciar o acesso a projetos, pastas e organizações.
No console do Google Cloud, acesse a página Políticas da organização.
No seletor de projetos, selecione a organização em que você quer desativar a restrição
iam.disableServiceAccountKeyCreation
.No campo Filtro, digite
iam.disableServiceAccountKeyCreation
. Em seguida, na lista de políticas, clique em Desativar criação de chave da conta de serviço.Clique em Gerenciar política.
Na seção Origem da política, verifique se a opção Substituir política do editor principal está selecionada.
Em Aplicação, desative a aplicação dessa restrição de política da organização.
Clique em Definir política.
Para isentar seu projeto da aplicação, faça o seguinte:
-
Verifique se você tem a função de administrador de tags (
roles/resourcemanager.tagAdmin
) e a função de administrador da política da organização (roles/orgpolicy.policyAdmin
) no nível da organização. Para saber como conceder papéis no nível da organização, consulte Gerenciar o acesso a projetos, pastas e organizações. -
No nível da organização, crie uma chave de tag e um valor de tag que serão usados para definir se um recurso será isento da política da organização. Recomendamos criar uma tag com a chave
disableServiceAccountKeyCreation
e os valoresenforced
enot_enforced
.Para saber como criar chaves e valores de tag, consulte Como criar e definir uma nova tag.
-
Anexe a tag
disableServiceAccountKeyCreation
à organização e defina o valor comoenforced
. Todos os recursos na organização herdam esse valor de tag, a menos que ele seja substituído por um valor de tag diferente.Para saber como anexar tags aos recursos, consulte Como anexar tags aos recursos.
-
Para cada conta de serviço que você quer isentar da política da organização, anexe a
tag
disableServiceAccountKeyCreation
e defina o valor comonot_enforced
. Definir um valor de tag para uma conta de serviço dessa maneira substitui o valor da tag herdado da organização. -
Crie ou atualize a política da organização que impede a criação de chaves de conta de serviço para que ela não aplique a restrição a recursos isentos. Essa política precisa ter as seguintes regras:
-
Configure a restrição
iam.disableServiceAccountKeyCreation
para que não seja aplicada aos recursos com a tagdisableServiceAccountKeyCreation: not_enforced
. A condição nessa regra precisa ser semelhante a esta:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
-
Configure a restrição
iam.disableServiceAccountKeyCreation
para que seja aplicada a todos os outros recursos.
-
-
Verifique se você tem a função de administrador de tags (
Resolver problemas de criação de conta de serviço desativadas
Se a restrição iam.disableServiceAccountCreation
for aplicada à sua
organização, não será possível criar contas de serviço em nenhum projeto da
organização. Para mais informações sobre essa restrição, consulte
Desativar a conta de serviço de serviço.
Erro na criação da conta de serviço
Se você tentar criar uma conta de serviço, mas a ação for bloqueada pela restrição iam.disableServiceAccountCreation
, a seguinte mensagem de erro será exibida:
Console
No console do Google Cloud, uma caixa de diálogo aparece com o título Falha na criação da conta de serviço. A caixa de diálogo informa: 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 o seguinte:
Avalie se uma conta de serviço é necessária.
Consulte Escolher quando usar contas de serviço para confirmar se uma conta de serviço é necessária para seu caso de uso.
Se uma conta de serviço for necessária para seu caso de uso, desative a restrição
iam.disableServiceAccountCreation
no projeto.
Para desativar a restrição de política da organização, desative a aplicação dela ou isente seu projeto da aplicação:
Para desativar a aplicação da restrição em toda a organização, faça o seguinte:
Verifique se você tem o papel de administrador da política da organização (
roles/orgpolicy.policyAdmin
) no nível da organização. Esse papel só está disponível para concessão em organizações e não aparece na lista de papéis para projetos.Para saber como conceder papéis no nível da organização, consulte Gerenciar o acesso a projetos, pastas e organizações.
No console do Google Cloud, acesse a página Políticas da organização.
No seletor de projetos, selecione a organização em que você quer desativar a restrição
iam.disableServiceAccountCreation
.No campo Filtro, digite
iam.disableServiceAccountCreation
. Em seguida, na lista de políticas, clique em Desativar conta de serviço de serviço.Clique em Gerenciar política.
Na seção Origem da política, verifique se a opção Substituir política do editor principal está selecionada.
Em Aplicação, desative a aplicação dessa restrição de política da organização.
Clique em Definir política.
Para isentar seu projeto da aplicação, faça o seguinte:
-
Verifique se você tem a função de administrador de tags (
roles/resourcemanager.tagAdmin
) e a função de administrador da política da organização (roles/orgpolicy.policyAdmin
) no nível da organização. Para saber como conceder papéis no nível da organização, consulte Gerenciar o acesso a projetos, pastas e organizações. -
No nível da organização, crie uma chave de tag e um valor de tag que serão usados para definir se um recurso será isento da política da organização. Recomendamos criar uma tag com a chave
disableServiceAccountCreation
e os valoresenforced
enot_enforced
.Para saber como criar chaves e valores de tag, consulte Como criar e definir uma nova tag.
-
Anexe a tag
disableServiceAccountCreation
à organização e defina o valor comoenforced
. Todos os recursos na organização herdam esse valor de tag, a menos que ele seja substituído por um valor de tag diferente.Para saber como anexar tags aos recursos, consulte Como anexar tags aos recursos.
-
Para cada projeto ou pasta que você quer isentar da política da organização, anexe a tag
disableServiceAccountCreation
e defina-a com o valornot_enforced
. Definir um valor de tag para um projeto ou uma pasta dessa maneira substitui o valor da tag 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 ela não aplique a restrição a recursos isentos. Essa política precisa ter as seguintes regras:
-
Configure a restrição
iam.disableServiceAccountCreation
para que não seja aplicada aos recursos com a tagdisableServiceAccountCreation: not_enforced
. A condição nessa regra precisa ser semelhante a esta:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountCreation', 'not_enforced')"
-
Configure a restrição
iam.disableServiceAccountCreation
para que seja aplicada a todos os outros recursos.
-
-
Verifique se você tem a função de administrador de tags (
Resolver problemas ao conceder papéis a contas de serviço padrão
As contas de serviço padrão são criadas automaticamente quando você usa determinados serviços do Google Cloud. Eles têm os seguintes identificadores:
- Conta de serviço padrão do serviço do App Engine:
PROJECT_ID@appspot.gserviceaccount.com
- Conta de serviço padrão do Compute Engine:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Todas as contas de serviço padrão recebem automaticamente o papel de Editor
(roles/editor
) quando são criadas, a menos que esse comportamento seja desativado por uma
política da organização. Há duas restrições de política da organização que impedem
que o papel de editor seja concedido às contas de serviço padrão:
iam.automaticIamGrantsForDefaultServiceAccounts
: uma restrição predefinida que impede que as contas de serviço padrão recebam papéis automaticamente. Essa restrição não impede que você conceda a função de editor a contas de serviço padrão.constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
: uma restrição gerenciada que impede que os papéis de editor e proprietário (roles/owner
) sejam concedidos às contas de serviço padrão.
Erro ao conceder papéis básicos a contas de serviço
Se a restrição iam.automaticIamGrantsForDefaultServiceAccounts
ou a
constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
for aplicada ao seu projeto, as cargas de trabalho que
usam as contas de serviço padrão poderão encontrar erros de permissão insuficiente.
Para saber quais papéis conceder a uma conta de serviço padrão, consulte
Solução recomendada para conceder papéis a contas de serviço
padrão.
A restrição iam.automaticIamGrantsForDefaultServiceAccounts
não causa
erros por conta própria. No entanto, devido a essa restrição, é possível que uma carga de trabalho que use a conta de serviço padrão não tenha as permissões necessárias.
Além disso, se a restrição constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts
for aplicada ao seu projeto, uma mensagem de erro como esta será exibida se você tentar conceder a função de proprietário ou editor a uma conta de serviço padrão:
Console
No console do Google Cloud, uma caixa de diálogo aparece com o título Falha na atualização da política do IAM. A caixa de diálogo informa que as mudanças que você está tentando fazer na política do IAM foram restringidas pelo administrador da política da organização e, em seguida, lista as restrições que estão bloqueando a atualização. As restrições
listadas 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 papéis a contas de serviço padrão
Se uma política da organização impedir que você conceda o papel de editor ou proprietário a uma conta de serviço padrão, encontre um papel menos permissivo para conceder à conta de serviço. O papel que a conta de serviço precisa depende do serviço que você está usando e das tarefas que você quer realizar.
Consulte a tabela a seguir para determinar qual papel conceder a qual conta de serviço padrão, dependendo do serviço que você está usando:
Serviço | Conta padrão de serviço | Papel a ser concedido |
---|---|---|
App Engine |
Conta de serviço padrão do App Engine (PROJECT_ID@appspot.gserviceaccount.com )
|
Papel de conta do Cloud Build (roles/cloudbuild.builds.builder )
|
Compute Engine |
Conta de serviço padrão do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Os papéis que a conta de serviço padrão precisa ter dependem da tarefa que você quer realizar. Para descobrir quais papéis são necessários, consulte a documentação da tarefa que você quer realizar ou Escolher papéis predefinidos. Ao decidir qual função conceder, siga as práticas recomendadas descritas na página Contas de serviço da documentação do Compute Engine. |
Cloud Build |
Conta de serviço padrão 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 padrão do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Para saber quais papéis conceder a essa conta de serviço, encontre o guia de início rápido do Cloud Deploy que corresponde ao seu caso de uso e conceda as funções descritas nele. Para conferir uma lista de guias de início rápido do Cloud Deploy, consulte Guias de início rápido na documentação do Cloud Deploy. |
Funções do Cloud Run e do Cloud Functions |
Conta de serviço padrão do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Para implantar funções: função de conta do Cloud Build ( Para mais informações, consulte Conta de serviço personalizada para o Cloud Build. |
Cloud Run |
Conta de serviço padrão do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Os papéis que a conta de serviço padrão precisa ter dependem da tarefa que você quer realizar. Para descobrir quais papéis são necessários, consulte a documentação da tarefa que você quer realizar ou Escolher papéis predefinidos. Para saber mais sobre os papéis do Cloud Run, consulte Controle de acesso com o IAM na documentação do Cloud Run. |
Google Kubernetes Engine |
Conta de serviço padrão do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Função padrão da conta de serviço de nós do Kubernetes Engine ( Para mais informações, consulte Usar contas de serviço do IAM com privilégio mínimo. |
Fluxos de trabalho |
Conta de serviço padrão do Compute Engine
(PROJECT_NUMBER-compute@developer.gserviceaccount.com )
|
Os papéis que a conta de serviço padrão precisa ter dependem da tarefa que você quer realizar. Para descobrir quais papéis são necessários, consulte a documentação da tarefa que você quer realizar ou Escolher papéis predefinidos. Siga as práticas recomendadas descritas na página Conceder permissão a um fluxo de trabalho para acessar recursos do Google Cloud na documentação de Workflows. |