Vous pouvez utiliser des liaisons d'accès pour contrôler les applications et les ressources auxquelles vos groupes d'utilisateurs peuvent accéder. Une liaison d'accès spécifie comment appliquer des niveaux d'accès et des contrôles de session à un groupe d'utilisateurs. Vous pouvez appliquer le même niveau d'accès et le même contrôle des sessions à toutes les applications, ou définir des comportements spécifiques pour des applications individuelles.
Pour vous assurer que vous avez tout configuré correctement, vous pouvez tester vos règles avant de les appliquer.
Lorsque vous utilisez des liaisons d'accès, tenez compte du comportement suivant:
- Un groupe d'utilisateurs ne peut avoir qu'une seule liaison d'accès.
- Si un utilisateur appartient à plusieurs groupes, l'accès lui est accordé si une stratégie l'autorise (
OR
, pasAND
). - Pour les commandes de session, seule la liaison d'accès créée la plus récemment s'applique.
Utiliser une seule configuration pour toutes les applications
Cette méthode applique le même niveau d'accès et le même contrôle de session à toutes les applications auxquelles un groupe d'utilisateurs accède.
Nous vous recommandons de tester votre stratégie avec un essai ou de l'appliquer à un petit groupe de test avant de l'implémenter en production.
gcloud
Créez la liaison d'accès.
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 ]
Remplacez les éléments suivants :
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
get
sur la ressource de groupe. - ORG_ID: ID de votre organisation.
-
DEFAULT_ACCESS_LEVEL: nom facultatif du niveau d'accès, qui prend la forme
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. RemplacezPOLICY_ID
par l'ID de la règle d'accès etACCESS_LEVEL_NAME
par le nom du niveau d'accès. -
DEFAULT_SESSION_LENGTH: durée de session facultative au format ISO 8601, par exemple
30m
pour 30 minutes ou2h
pour deux heures. -
DEFAULT_SESSION_REAUTH_METHOD: méthode facultative pour demander aux utilisateurs de valider à nouveau leur identité. Elle doit être l'une des suivantes :
LOGIN
: appliquez la connexion standard, qui peut inclure MFA ou d'autres facteurs définis par Workspace.PASSWORD
: n'exigez qu'un mot de passe, même si d'autres facteurs sont définis. Si les mots de passe sont gérés à l'aide d'un fournisseur d'identité externe, les utilisateurs sont redirigés vers celui-ci. Si la session de l'IdP est active, les utilisateurs sont réauthentifiés implicitement. Si le fournisseur d'identité n'est pas actif, les utilisateurs doivent se connecter via celui-ci.SECURITY_KEY
: exigez une clé de sécurité matérielle.
API
Créez un corps JSON:
{ "groupKey": "GROUP_ID", "accessLevels": [ "DEFAULT_ACCESS_LEVEL" ], // optional: "sessionSettings": { "sessionLength": "DEFAULT_SESSION_LENGTH", "sessionReauthMethod": "DEFAULT_SESSION_REAUTH_METHOD" } }
Remplacez les éléments suivants :
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
get
sur la ressource de groupe. -
DEFAULT_ACCESS_LEVEL: nom facultatif du niveau d'accès, qui prend la forme
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. RemplacezPOLICY_ID
par l'ID de la règle d'accès etACCESS_LEVEL_NAME
par le nom du niveau d'accès. -
DEFAULT_SESSION_LENGTH: durée de session facultative au format ISO 8601, par exemple
30m
pour 30 minutes ou2h
pour deux heures. -
DEFAULT_SESSION_REAUTH_METHOD: méthode facultative pour demander aux utilisateurs de valider à nouveau leur identité. Elle doit être l'une des suivantes :
LOGIN
: appliquez la connexion standard, qui peut inclure MFA ou d'autres facteurs définis par Workspace.PASSWORD
: n'exigez qu'un mot de passe, même si d'autres facteurs sont définis. Si les mots de passe sont gérés à l'aide d'un fournisseur d'identité externe, les utilisateurs sont redirigés vers celui-ci. Si la session de l'IdP est active, les utilisateurs sont réauthentifiés implicitement. Si le fournisseur d'identité n'est pas actif, les utilisateurs doivent se connecter via celui-ci.SECURITY_KEY
: exigez une clé de sécurité matérielle.
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
Envoyez la requête POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID : ID de l'organisation que vous avez utilisée pour créer le rôle Administrateur de liaison d'accès Cloud. Si la propriété
access-context-manager/organization
n'a pas été définie, remplacezORG_ID
dans l'option facultative--organization
par l'ID de l'organisation que vous avez utilisé lors de la création du rôle Administrateur de la liaison d'accès Cloud.
Si l'opération réussit, vous devriez recevoir une représentation de l'objet JSON. En cas de problème, un message d'erreur s'affiche.
Définir des configurations pour des applications spécifiques
Cette méthode vous permet d'appliquer différents niveaux d'accès et de contrôle des sessions à différentes applications. Vous pouvez également définir des règles par défaut pour les applications qui ne disposent pas de configurations spécifiques. Cette méthode est utile lorsque vous souhaitez effectuer les opérations suivantes:
- Appliquer des règles à certaines applications uniquement
Créez une règle générale, mais excluez-en certaines applications.
gcloud
Créez un fichier de liaison au format YAML avec une liste d'entrées de portée dans la liste
scopedAccessSettings
. Pour chaque application que vous souhaitez mapper à un niveau d'accès spécifique, incluez une entréeclientScope
.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
Remplacez les éléments suivants :
- CLIENT_ID: ID client OAuth. Vous devez utiliser
clientId
lorsqu'une application contientsessionSettings
. - ACCESS_LEVEL_A: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: durée de la session au format ISO 8601, par exemple
30m
pour 30 minutes ou2h
pour deux heures. SESSION_REAUTH_METHOD: méthode facultative pour demander aux utilisateurs de valider à nouveau leur identité. Elle doit être l'une des suivantes:
LOGIN
: appliquez la connexion standard, qui peut inclure MFA ou d'autres facteurs définis par Workspace.PASSWORD
: n'exigez qu'un mot de passe, même si d'autres facteurs sont définis. Si les mots de passe sont gérés à l'aide d'un IdP externe, les utilisateurs sont redirigés vers l'IdP. Si la session de l'IdP est active, les utilisateurs sont réauthentifiés de manière implicite. Si l'IdP n'est pas actif, les utilisateurs doivent se connecter via l'IdP.SECURITY_KEY
: exigez une clé de sécurité matérielle.
CLIENT_NAME: nom du client. Si l'application contient
sessionSettings
, vous ne pouvez pas utiliser le nom du client. Utilisez plutôt l'ID client OAuth.ACCESS_LEVEL_B: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Pour définir un niveau d'accès par défaut pour les applications non définies dans le fichier YAML, utilisez l'argument
--level
. Le fichier YAML n'est compatible qu'avec les paramètres spécifiques à l'application (scopedAccessSettings
).- CLIENT_ID: ID client OAuth. Vous devez utiliser
Créez la liaison d'accès.
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 ]
Remplacez les éléments suivants :
- ORG_ID: ID de votre organisation.
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
get
sur la ressource de groupe. -
BINDING_FILE_PATH: chemin d'accès au fichier YAML contenant le schéma de liaison d'accès.
Le fichier de liaison n'est compatible qu'avec
scopedAccessSettings
. -
DEFAULT_ACCESS_LEVEL: nom facultatif du niveau d'accès, qui prend la forme
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. RemplacezPOLICY_ID
par l'ID de la règle d'accès etACCESS_LEVEL_NAME
par le nom du niveau d'accès. -
DEFAULT_SESSION_LENGTH: durée de session facultative au format ISO 8601, par exemple
30m
pour 30 minutes ou2h
pour deux heures. -
DEFAULT_SESSION_REAUTH_METHOD: méthode facultative pour demander aux utilisateurs de valider à nouveau leur identité. Elle doit être l'une des suivantes :
LOGIN
: appliquez la connexion standard, qui peut inclure MFA ou d'autres facteurs définis par Workspace.PASSWORD
: n'exigez qu'un mot de passe, même si d'autres facteurs sont définis. Si les mots de passe sont gérés à l'aide d'un fournisseur d'identité externe, les utilisateurs sont redirigés vers celui-ci. Si la session de l'IdP est active, les utilisateurs sont réauthentifiés implicitement. Si le fournisseur d'identité n'est pas actif, les utilisateurs doivent se connecter via celui-ci.SECURITY_KEY
: exigez une clé de sécurité matérielle.
Fonctionnement combiné des arguments --level
et --binding-file
- Si vous n'utilisez que
--binding-file
, seules les applications du fichier voient les règles appliquées. - Si vous n'utilisez que
--level
, le niveau d'accès s'applique à toutes les applications. - Si vous utilisez les deux, les règles du fichier YAML ont la priorité. La valeur
--level
s'applique à toutes les applications qui ne sont pas listées dans le fichier.
Utiliser les commandes de session
- Pour définir les contrôles de session par défaut pour toutes les applications, utilisez
--session-length
et--session-reauth-method
. - Si vous définissez également des commandes de session dans le fichier YAML, ces commandes de session remplacent les paramètres par défaut de ces applications spécifiques.
- Vous devez utiliser à la fois
--session-length
et--session-reauth-method
.
API
Créez un corps 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"
]
}
}
}
]
}
Remplacez les éléments suivants :
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
get
sur la ressource de groupe. -
DEFAULT_ACCESS_LEVEL: nom facultatif du niveau d'accès, qui prend la forme
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. RemplacezPOLICY_ID
par l'ID de la règle d'accès etACCESS_LEVEL_NAME
par le nom du niveau d'accès. - CLIENT_ID: ID client OAuth. Vous devez utiliser
clientId
lorsqu'une application contientsessionSettings
. - ACCESS_LEVEL_A: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - SESSION_LENGTH: durée de la session au format ISO 8601, par exemple
30m
pour 30 minutes ou2h
pour deux heures. SESSION_REAUTH_METHOD: méthode facultative pour demander aux utilisateurs de valider de nouveau leur identité. Elle doit être l'une des suivantes:
LOGIN
: appliquez la connexion standard, qui peut inclure MFA ou d'autres facteurs définis par Workspace.PASSWORD
: n'exigez qu'un mot de passe, même si d'autres facteurs sont définis. Si les mots de passe sont gérés à l'aide d'un IdP externe, les utilisateurs sont redirigés vers l'IdP. Si la session de l'IdP est active, les utilisateurs sont réauthentifiés de manière implicite. Si l'IdP n'est pas actif, les utilisateurs doivent se connecter via l'IdP.SECURITY_KEY
: exigez une clé de sécurité matérielle.
CLIENT_NAME: nom du client. Si l'application contient
sessionSettings
, vous ne pouvez pas utiliser le nom du client. Utilisez plutôt l'ID client OAuth.ACCESS_LEVEL_B: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Envoyez la requête POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID correspond à l'ID de l'organisation que vous avez utilisée pour créer le rôle Administrateur de liaison d'accès Cloud. Si la propriété access-context-manager/organization
n'a pas été définie, remplacez ORG_ID
dans l'option facultative --organization
par l'ID de l'organisation que vous avez utilisé lors de la création du rôle Administrateur de la liaison d'accès Cloud.
Si l'opération réussit, vous devriez recevoir une représentation de l'objet JSON ou un message d'erreur en cas de problème.
Utiliser des niveaux d'accès en simulation pour simuler l'application
Les niveaux d'accès en simulation vous permettent de tester vos règles d'accès sans les appliquer réellement. Cela vous aide à comprendre l'impact d'une stratégie avant sa mise en ligne. Vous pouvez consulter les journaux de simulation pour voir ce qui se serait passé si la règle était active.
Seuls les niveaux d'accès peuvent être utilisés en mode de simulation. Les commandes de session ne sont pas disponibles en mode de simulation.
Créer une liaison de simulation
Vous pouvez définir des niveaux d'accès de simulation en plus des niveaux d'accès normaux dans la même liaison, ou vous pouvez utiliser des liaisons distinctes pour les simulations.
gcloud
Configurez les paramètres d'accès.
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
Remplacez les éléments suivants :
- CLIENT_NAME: nom du client. Si l'application contient
sessionSettings
, vous ne pouvez pas utiliser le nom du client. Utilisez plutôt l'ID client OAuth. - ACCESS_LEVEL_A: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_ID: ID client OAuth. Vous devez utiliser
clientId
lorsqu'une application contientsessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
- CLIENT_NAME: nom du client. Si l'application contient
Créez la liaison d'accès.
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
Remplacez les éléments suivants :
- ORG_ID: ID de votre organisation.
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
get
sur la ressource de groupe. -
BINDING_FILE_PATH: chemin d'accès au fichier YAML contenant le schéma de liaison d'accès.
Le fichier de liaison n'est compatible qu'avec
scopedAccessSettings
. - DEFAULT_DRY_RUN_ACCESS_LEVEL_2: nom facultatif du niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
Incluez cet indicateur pour appliquer le niveau d'accès de simulation spécifié à toutes les applications par défaut s'ils ne sont pas spécifiés dans le fichier YAML.
API
Créez un corps 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" ] } } ] }
Remplacez les éléments suivants :
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
get
sur la ressource de groupe. -
DEFAULT_ACCESS_LEVEL: nom facultatif du niveau d'accès, qui prend la forme
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. RemplacezPOLICY_ID
par l'ID de la règle d'accès etACCESS_LEVEL_NAME
par le nom du niveau d'accès. - DEFAULT_DRY_RUN_ACCESS_LEVEL: nom facultatif du niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_NAME: nom du client. Si l'application contient
sessionSettings
, vous ne pouvez pas utiliser le nom du client. Utilisez plutôt l'ID client OAuth. - ACCESS_LEVEL_A: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - DRY_RUN_ACCESS_LEVEL_1: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
. - CLIENT_ID: ID client OAuth. Vous devez utiliser
client_id
lorsqu'une application contientsessionSettings
. - DRY_RUN_ACCESS_LEVEL_2: nom de niveau d'accès au format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
.
-
GROUP_ID: ID du groupe. Si l'ID de groupe n'est pas disponible, vous pouvez le récupérer en appelant la méthode
Envoyez la requête POST:
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID : ID de l'organisation que vous avez utilisée pour créer le rôle Administrateur de liaison d'accès Cloud. Si la propriété
access-context-manager/organization
n'a pas été définie, remplacezORG_ID
dans l'option facultative--organization
par l'ID de l'organisation que vous avez utilisé lors de la création du rôle Administrateur de la liaison d'accès Cloud.Si l'opération réussit, vous devriez recevoir une représentation de l'objet JSON. En cas de problème, un message d'erreur s'affiche.
Afficher les journaux de simulation
Une fois que vous avez configuré un exercice fictif, vous pouvez consulter les journaux pour voir quelles tentatives d'accès auraient été refusées.
Le tableau suivant répertorie les champs de journal que vous pouvez utiliser pour créer et exécuter la requête permettant d'obtenir les journaux:
Nom du champ | Description |
---|---|
protoPayload.authenticationInfo.principalEmail |
ID de messagerie du compte principal pour lequel l'accès est refusé. |
protoPayload.metadata.deniedApplications |
Nom de l'application pour laquelle l'accès est refusé. |
protoPayload.metadata.evaluationResult |
Résultat de l'évaluation de la stratégie d'accès active. Valeurs possibles : GRANTED ou DENIED . |
protoPayload.metadata.appliedAccessLevels |
Niveaux d'accès appliqués requis par la règle d'accès active. |
protoPayload.metadata.appliedDryRunAccessLevels |
Niveaux d'accès appliqués requis par la règle d'accès en simulation. |
protoPayload.metadata.dryRunEvaluationResult |
Résultat de l'évaluation de la stratégie d'accès en simulation, qui indique l'action prévue lorsque la stratégie d'accès est appliquée.
Valeurs possibles : GRANTED ou DENIED . |
Pour savoir comment créer une requête pour les journaux, consultez la page Langage de requête Logging.