Pode usar associações de acesso para controlar as aplicações e os recursos aos quais os seus grupos de utilizadores podem aceder. Uma associação de acesso especifica como aplicar níveis de acesso e controlos de sessão a um grupo de utilizadores. Pode aplicar o mesmo nível de acesso e controlo de sessão a todas as aplicações ou definir comportamentos específicos para aplicações individuais.
Para garantir que configurou tudo corretamente, pode testar as suas políticas antes de as aplicar.
Quando trabalhar com associações de acesso, tenha em atenção o seguinte comportamento:
- Um grupo de utilizadores só pode ter uma associação de acesso.
- Se um utilizador pertencer a vários grupos, o utilizador recebe acesso se alguma política o permitir (
OR
e nãoAND
). - Para os controlos de sessão, apenas se aplica a associação de acesso criada mais recentemente.
Use uma única configuração para todas as aplicações
Este método aplica o mesmo nível de acesso e controlo de sessão a todas as aplicações acedidas por um grupo de utilizadores.
Recomendamos que teste a sua política com uma simulação ou a aplique a um pequeno grupo de teste antes de a implementar em produção.
gcloud
Crie a associação de acesso.
gcloud access-context-manager cloud-bindings create \ --group-key GROUP_ID --organization ORG_ID --level DEFAULT_ACCESS_LEVEL [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]
Substitua o seguinte:
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
get
no recurso do grupo. - ORG_ID: o ID da sua organização.
-
DEFAULT_ACCESS_LEVEL: o nome do nível de acesso opcional, que assume a forma
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SubstituaPOLICY_ID
pelo ID da política de acesso eACCESS_LEVEL_NAME
pelo nome do nível de acesso. -
DEFAULT_SESSION_LENGTH: a duração opcional da sessão no formato de duração ISO 8601, como
30m
para 30 minutos ou2h
para duas horas. -
DEFAULT_SESSION_REAUTH_METHOD: o método opcional para desafiar os utilizadores a validarem novamente a respetiva identidade, que tem de ser um dos seguintes:
LOGIN
: aplique o início de sessão padrão, que pode incluir a MFA ou outros fatores definidos pelo Workspace.PASSWORD
: só requer uma palavra-passe, mesmo que outros fatores estejam definidos. Se as palavras-passe forem geridas através de um IdP externo, os utilizadores são redirecionados para o IdP. Se a sessão do IdP estiver ativa, os utilizadores são autenticados novamente de forma implícita. Se o IdP não estiver ativo, os utilizadores têm de iniciar sessão através do IdP.SECURITY_KEY
: exigir uma chave de segurança de hardware.
API
Crie um corpo JSON:
{ "groupKey": "GROUP_ID", "accessLevels": [ "DEFAULT_ACCESS_LEVEL" ], // optional: "sessionSettings": { "sessionLength": "DEFAULT_SESSION_LENGTH", "sessionReauthMethod": "DEFAULT_SESSION_REAUTH_METHOD" } }
Substitua o seguinte:
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
get
no recurso do grupo. -
DEFAULT_ACCESS_LEVEL: o nome do nível de acesso opcional, que assume a forma
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SubstituaPOLICY_ID
pelo ID da política de acesso eACCESS_LEVEL_NAME
pelo nome do nível de acesso. -
DEFAULT_SESSION_LENGTH: a duração opcional da sessão no formato de duração ISO 8601, como
30m
para 30 minutos ou2h
para duas horas. -
DEFAULT_SESSION_REAUTH_METHOD: o método opcional para desafiar os utilizadores a validarem novamente a respetiva identidade, que tem de ser um dos seguintes:
LOGIN
: aplique o início de sessão padrão, que pode incluir a MFA ou outros fatores definidos pelo Workspace.PASSWORD
: só requer uma palavra-passe, mesmo que outros fatores estejam definidos. Se as palavras-passe forem geridas através de um IdP externo, os utilizadores são redirecionados para o IdP. Se a sessão do IdP estiver ativa, os utilizadores são autenticados novamente de forma implícita. Se o IdP não estiver ativo, os utilizadores têm de iniciar sessão através do IdP.SECURITY_KEY
: exigir uma chave de segurança de hardware.
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
Envie o pedido POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID É o ID da organização que usou para criar a função Administrador de associações de acesso à nuvem. Se a propriedade
access-context-manager/organization
não tiver sido definida, substituaORG_ID
na flag--organization
opcional pelo ID da organização que usou quando criou a função de administrador de associação de acesso à nuvem.
Se for bem-sucedido, deve receber uma representação do objeto JSON. Se existir um problema, recebe uma mensagem de erro.
Defina configurações para aplicações específicas
Este método permite-lhe aplicar diferentes níveis de acesso e controlos de sessão a diferentes aplicações. Também pode definir regras predefinidas para aplicações que não tenham configurações específicas.
Pode especificar aplicações em associações de acesso através do respetivo ID de cliente OAuth. Pode especificar as seguintes aplicações através do respetivo nome:
- Cloud Console
- SDK do Google Cloud
- Biblioteca Google Auth Se usar as Credenciais padrão da aplicação (ADC) geradas pela CLI gcloud e quiser usar o nome, tem de usar o ID do cliente predefinido incorporado na CLI gcloud. Não pode fornecer um ficheiro de ID de cliente à CLI gcloud.
- Consola do Firebase
Este método é útil quando quer fazer o seguinte:
- Aplicar políticas apenas a determinadas aplicações.
Criar uma política geral, mas excluir algumas aplicações da mesma.
gcloud
Crie um ficheiro de associação no formato YAML com uma lista de entradas de âmbito na lista
scopedAccessSettings
. Para cada aplicação que quer mapear para um nível de acesso específico, inclua uma entradaclientScope
.scopedAccessSettings: - scope: clientScope: restrictedClientApplication: clientId: CLIENT_ID activeSettings: accessLevels: - ACCESS_LEVEL_A sessionSettings: - sessionLength: SESSION_LENGTH sessionReauthMethod: SESSION_REAUTH_METHOD sessionLengthEnabled: true - scope: clientScope: restrictedClientApplication: # # because this app is specified by `name`, # it won't work with sessionSettings. # # if you add sessionSettings, make sure to # replace the `name` key with `clientId`, # and use the OAuth client ID as the value. # name: CLIENT_NAME activeSettings: accessLevels: - ACCESS_LEVEL_B
Substitua o seguinte:
- CLIENT_ID: o ID de cliente OAuth. Tem de usar
clientId
quando uma aplicação contémsessionSettings
. - ACCESS_LEVEL_A: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: a duração da sessão no formato de duração ISO 8601, como
30m
para 30 minutos ou2h
para duas horas. SESSION_REAUTH_METHOD: o método opcional para desafiar os utilizadores a validarem novamente a respetiva identidade, que tem de ser um dos seguintes:
LOGIN
: aplique o início de sessão padrão, que pode incluir a MFA ou outros fatores definidos pelo Workspace.PASSWORD
: Exigir apenas uma palavra-passe, mesmo que outros fatores estejam definidos. Se as palavras-passe forem geridas através de um IdP externo, os utilizadores são redirecionados para o IdP. Se a sessão do IdP estiver ativa, os utilizadores são autenticados novamente de forma implícita. Se o IdP não estiver ativo, os utilizadores têm de iniciar sessão através do IdP.SECURITY_KEY
: exigir uma chave de segurança de hardware.
CLIENT_NAME: o nome do cliente. Se a aplicação contiver
sessionSettings
, não pode usar o nome do cliente. Em alternativa, use o ID de cliente OAuth.ACCESS_LEVEL_B: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Para definir um nível de acesso predefinido para aplicações não definidas no ficheiro YAML, use o argumento
--level
. O ficheiro YAML só suporta definições específicas da aplicação (scopedAccessSettings
).- CLIENT_ID: o ID de cliente OAuth. Tem de usar
Crie a associação de acesso.
gcloud access-context-manager cloud-bindings create --organization ORG_ID --group-key GROUP_ID --binding-file BINDING_FILE_PATH [ --level DEFAULT_ACCESS_LEVEL ] [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]
Substitua o seguinte:
- ORG_ID: o ID da sua organização.
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
get
no recurso do grupo. -
BINDING_FILE_PATH: o caminho para o ficheiro YAML que contém o esquema de associação de acesso.
O ficheiro de associação só suporta
scopedAccessSettings
. -
DEFAULT_ACCESS_LEVEL: o nome do nível de acesso opcional, que assume a forma
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SubstituaPOLICY_ID
pelo ID da política de acesso eACCESS_LEVEL_NAME
pelo nome do nível de acesso. -
DEFAULT_SESSION_LENGTH: a duração opcional da sessão no formato de duração ISO 8601, como
30m
para 30 minutos ou2h
para duas horas. -
DEFAULT_SESSION_REAUTH_METHOD: o método opcional para desafiar os utilizadores a validarem novamente a respetiva identidade, que tem de ser um dos seguintes:
LOGIN
: aplique o início de sessão padrão, que pode incluir a MFA ou outros fatores definidos pelo Workspace.PASSWORD
: só requer uma palavra-passe, mesmo que outros fatores estejam definidos. Se as palavras-passe forem geridas através de um IdP externo, os utilizadores são redirecionados para o IdP. Se a sessão do IdP estiver ativa, os utilizadores são autenticados novamente de forma implícita. Se o IdP não estiver ativo, os utilizadores têm de iniciar sessão através do IdP.SECURITY_KEY
: exigir uma chave de segurança de hardware.
Como funcionam em conjunto os argumentos --level
e --binding-file
- Se usar apenas
--binding-file
, apenas as aplicações no ficheiro têm as políticas aplicadas. - Se usar apenas
--level
, o nível de acesso aplica-se a todas as aplicações. - Se usar ambas, as regras são combinadas. O valor
--level
aplica-se a todas as aplicações, enquanto as políticas no ficheiro YAML especificadas por--binding-file
aplicam-se apenas às aplicações conforme definido no ficheiro.
Trabalhar com controlos de sessão
- Para definir controlos de sessão predefinidos para todas as aplicações, use
--session-length
e--session-reauth-method
. - Se também definir controlos de sessão no ficheiro YAML, esses controlos de sessão substituem as predefinições para essas aplicações específicas.
- Tem de usar o
--session-length
e o--session-reauth-method
em conjunto.
API
Crie um corpo JSON:
{
"groupKey": "GROUP_ID",
//
// Optional; if specified, all applications that aren't defined in
// scopedAccessSettings have these access levels applied.
//
// If more than one access level is specified, the user is
// granted access if any one resolves to TRUE (OR logic, not AND).
//
// If you omit this key entirely, then no policy enforcement is
// applied by default.
//
"accessLevels": [
"DEFAULT_ACCESS_LEVEL"
],
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"clientId": "CLIENT_ID"
}
}
},
"activeSettings": {
"accessLevels": [
"ACCESS_LEVEL_A"
],
"sessionSettings": [
{
"sessionLength": "SESSION_LENGTH",
"sessionReauthMethod": "SESSION_REAUTH_METHOD",
"sessionLengthEnabled": true
}
]
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "CLIENT_NAME"
}
},
"activeSettings": {
"accessLevels": [
"ACCESS_LEVEL_B"
]
}
}
}
]
}
Substitua o seguinte:
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
get
no recurso do grupo. -
DEFAULT_ACCESS_LEVEL: o nome do nível de acesso opcional, que assume a forma
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SubstituaPOLICY_ID
pelo ID da política de acesso eACCESS_LEVEL_NAME
pelo nome do nível de acesso. - CLIENT_ID: o ID de cliente OAuth. Tem de usar
clientId
quando uma aplicação contémsessionSettings
. - ACCESS_LEVEL_A: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: a duração da sessão no formato de duração ISO 8601, como
30m
para 30 minutos ou2h
para duas horas. SESSION_REAUTH_METHOD: O método opcional para desafiar os utilizadores a validarem novamente a respetiva identidade, que tem de ser um dos seguintes:
LOGIN
: aplique o início de sessão padrão, que pode incluir a MFA ou outros fatores definidos pelo Workspace.PASSWORD
: Exigir apenas uma palavra-passe, mesmo que outros fatores estejam definidos. Se as palavras-passe forem geridas através de um IdP externo, os utilizadores são redirecionados para o IdP. Se a sessão do IdP estiver ativa, os utilizadores são autenticados novamente de forma implícita. Se o IdP não estiver ativo, os utilizadores têm de iniciar sessão através do IdP.SECURITY_KEY
: exigir uma chave de segurança de hardware.
CLIENT_NAME: o nome do cliente. Se a aplicação contiver
sessionSettings
, não pode usar o nome do cliente. Em alternativa, use o ID de cliente OAuth.ACCESS_LEVEL_B: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Envie o pedido POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID é o ID da organização que usou para criar a função
Administrador de associações de acesso à nuvem. Se a propriedade access-context-manager/organization
não tiver sido definida, substitua ORG_ID
na flag --organization
opcional pelo ID da organização que usou quando criou a função de administrador de associação de acesso à nuvem.
Se for bem-sucedido, deve receber uma representação do objeto JSON ou uma mensagem de erro se tiver ocorrido um problema.
Use níveis de acesso de teste para simular a aplicação
Os níveis de acesso de teste permitem-lhe testar as suas políticas de acesso sem as aplicar efetivamente. Isto ajuda a compreender o impacto de uma política antes de entrar em vigor. Pode ver os registos do teste de execução para saber o que teria acontecido se a política estivesse ativa.
Só é possível usar níveis de acesso no modo de teste. Os controlos de sessão não estão disponíveis no modo de teste.
Crie uma associação de execução de ensaio
Pode definir níveis de acesso de teste juntamente com níveis de acesso normais na mesma associação ou usar associações separadas para testes.
gcloud
Configure as definições de acesso.
scopedAccessSettings: - scope: clientScope: restrictedClientApplication: name: CLIENT_NAME activeSettings: accessLevels: - ACCESS_LEVEL_A dryRunSettings: accessLevels: - DRY_RUN_ACCESS_LEVEL_1 - scope: clientScope: restrictedClientApplication: clientId: CLIENT_ID dryRunSettings: accessLevels: - DRY_RUN_ACCESS_LEVEL_2
Substitua o seguinte:
- CLIENT_NAME: o nome do cliente. Se a aplicação contiver
sessionSettings
, não pode usar o nome do cliente. Em alternativa, use o ID de cliente OAuth. - ACCESS_LEVEL_A: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_ID: o ID de cliente OAuth. Tem de usar
clientId
quando uma aplicação contémsessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
- CLIENT_NAME: o nome do cliente. Se a aplicação contiver
Crie a associação de acesso.
gcloud access-context-manager cloud-bindings create --organization ORG_ID --group-key GROUP_ID --binding-file BINDING_FILE_PATH --dry-run-level DEFAULT_DRY_RUN_ACCESS_LEVEL
Substitua o seguinte:
- ORG_ID: o ID da sua organização.
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
get
no recurso do grupo. -
BINDING_FILE_PATH: o caminho para o ficheiro YAML que contém o esquema de associação de acesso.
O ficheiro de associação só suporta
scopedAccessSettings
. - DEFAULT_DRY_RUN_ACCESS_LEVEL_2: um nome de nível de acesso opcional
no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Inclua esta flag para aplicar o nível de acesso de teste especificado a todas as aplicações por predefinição se não forem especificadas no YAML.
API
Crie um corpo JSON:
{ "group_key": "GROUP_ID", // // Optional; if specified, all applications that aren't defined in // scopedAccessSettings have these access levels applied. // // If more than one access level is specified, the user is // granted access if any one resolves to TRUE (OR logic, not AND). // // If you omit this key entirely, then no policy enforcement is // be applied by default. // "access_levels": [ "DEFAULT_ACCESS_LEVEL" ], // // Optional; if specified, all applications that aren't defined in // scopedAccessSettings will have these dry run access levels applied. // "dry_run_access_levels": [ "DEFAULT_DRY_RUN_ACCESS_LEVEL" ], "scoped_access_settings": [ { "scope": { "client_scope": { "restricted_client_application": { "name": "CLIENT_NAME" } } }, "active_settings": { "access_levels": [ "ACCESS_LEVEL_A" ] }, "dry_run_settings": { "access_levels": [ "DRY_RUN_ACCESS_LEVEL_1" ] } }, { "scope": { "client_scope": { "restricted_client_application": { "client_id": "CLIENT_ID" } } }, "active_settings": { "access_levels": [ "DRY_RUN_ACCESS_LEVEL_2" ] } } ] }
Substitua o seguinte:
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
get
no recurso do grupo. -
DEFAULT_ACCESS_LEVEL: o nome do nível de acesso opcional, que assume a forma
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. SubstituaPOLICY_ID
pelo ID da política de acesso eACCESS_LEVEL_NAME
pelo nome do nível de acesso. - DEFAULT_DRY_RUN_ACCESS_LEVEL: um nome de nível de acesso opcional
no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_NAME: o nome do cliente. Se a aplicação contiver
sessionSettings
, não pode usar o nome do cliente. Em alternativa, use o ID de cliente OAuth. - ACCESS_LEVEL_A: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_ID: o ID de cliente OAuth. Tem de usar
client_id
quando uma aplicação contémsessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: um nome de nível de acesso no formato
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
-
GROUP_ID: o ID do grupo. Se não tiver o ID do grupo disponível, pode obtê-lo através do método
Envie o pedido POST:
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID É o ID da organização que usou para criar a função Administrador de associações de acesso à nuvem. Se a propriedade
access-context-manager/organization
não tiver sido definida, substituaORG_ID
na flag--organization
opcional pelo ID da organização que usou quando criou a função de administrador de associação de acesso à nuvem.Se for bem-sucedido, deve receber uma representação do objeto JSON. Se existir um problema, recebe uma mensagem de erro.
Veja os registos do teste de execução
Depois de configurar um teste de execução, pode verificar os registos para ver que tentativas de acesso teriam sido recusadas.
A tabela seguinte lista os campos de registo que pode usar para criar e executar a consulta para obter os registos:
Nome do campo | Descrição |
---|---|
protoPayload.authenticationInfo.principalEmail |
ID do email do principal para o qual o acesso é recusado. |
protoPayload.metadata.deniedApplications |
Nome da aplicação para a qual o acesso é negado. |
protoPayload.metadata.evaluationResult |
O resultado da avaliação da política de acesso ativa. Valores possíveis:
GRANTED ou DENIED . |
protoPayload.metadata.appliedAccessLevels |
Os níveis de acesso aplicados exigidos pela política de acesso ativa. |
protoPayload.metadata.appliedDryRunAccessLevels |
Os níveis de acesso aplicados exigidos pela política de acesso de teste. |
protoPayload.metadata.dryRunEvaluationResult |
O resultado da avaliação da política de acesso de teste de execução, que indica a ação pretendida quando a política de acesso é aplicada.
Valores possíveis:
GRANTED ou DENIED . |
Para ver detalhes sobre como criar uma consulta para registos, consulte o artigo Linguagem de consulta de registo.