Stratégie IAM (Identity and Access Management) qui spécifie les contrôles d'accès pour les ressources Google Cloud.
Un Policy
est une collection de bindings
. Un binding
associe un ou plusieurs members
, ou comptes principaux, à un seul role
. Les comptes principaux peuvent être des comptes utilisateur, des comptes de service, des groupes Google et des domaines (tels que G Suite). Un role
est une liste nommée d'autorisations. Chaque role
peut être un rôle IAM prédéfini ou un rôle personnalisé créé par l'utilisateur.
Pour certains types de ressources Google Cloud, un objet binding
peut également spécifier un objet condition
, qui est une expression logique autorisant l'accès à une ressource seulement si l'expression renvoie la valeur true
. Une condition peut ajouter des contraintes en fonction des attributs de la requête, de la ressource ou des deux. Pour savoir quelles ressources acceptent les conditions dans leurs stratégies IAM, consultez la documentation IAM.
Exemple JSON :
{
"bindings": [
{
"role": "roles/resourcemanager.organizationAdmin",
"members": [
"user:mike@example.com",
"group:admins@example.com",
"domain:google.com",
"serviceAccount:my-project-id@appspot.gserviceaccount.com"
]
},
{
"role": "roles/resourcemanager.organizationViewer",
"members": [
"user:eve@example.com"
],
"condition": {
"title": "expirable access",
"description": "Does not grant access after Sep 2020",
"expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
}
}
],
"etag": "BwWWja0YfJA=",
"version": 3
}
Exemple YAML :
bindings:
- members:
- user:mike@example.com
- group:admins@example.com
- domain:google.com
- serviceAccount:my-project-id@appspot.gserviceaccount.com
role: roles/resourcemanager.organizationAdmin
- members:
- user:eve@example.com
role: roles/resourcemanager.organizationViewer
condition:
title: expirable access
description: Does not grant access after Sep 2020
expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
etag: BwWWja0YfJA=
version: 3
Pour obtenir une description d'IAM et de ses fonctionnalités, consultez la documentation IAM.
Représentation JSON |
---|
{ "version": integer, "bindings": [ { object ( |
Champs | |
---|---|
version |
Spécifie le format de la règle. Les valeurs valides sont Toute opération qui affecte les liaisons de rôle conditionnelles doit spécifier la version
Important : Si vous utilisez des conditions IAM, vous devez inclure le champ Si une règle n'inclut aucune condition, les opérations associées à cette règle peuvent spécifier une version valide ou laisser le champ non défini. Pour savoir quelles ressources acceptent les conditions dans leurs stratégies IAM, consultez la documentation IAM. |
bindings[] |
Associe une liste de Le |
auditConfigs[] |
Spécifie la configuration de journalisation d'audit du cloud pour cette stratégie. |
etag |
Important : Si vous utilisez des conditions IAM, vous devez inclure le champ Chaîne encodée en base64. |
Liaison
Associe des members
, ou des comptes principaux, à un role
.
Représentation JSON |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
Champs | |
---|---|
role |
Rôle attribué à la liste de |
members[] |
Spécifie les identités demandant l'accès à une ressource Google Cloud.
|
condition |
Condition associée à cette liaison. Si la condition renvoie Si la condition renvoie Pour savoir quelles ressources acceptent les conditions dans leurs stratégies IAM, consultez la documentation IAM. |
Expr
Représente une expression textuelle dans la syntaxe CEL (Common Expression Language). CEL est un langage d'expression de type C. La syntaxe et la sémantique de CEL sont documentées à l'adresse https://github.com/google/cel-spec.
Exemple (comparaison) :
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
Exemple (égalité) :
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
Exemple (logique) :
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
Exemple (manipulation de données) :
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
Les fonctions et variables exactes pouvant être référencées dans une expression sont déterminées par le service qui l'évalue. Pour en savoir plus, consultez la documentation relative au service.
Représentation JSON |
---|
{ "expression": string, "title": string, "description": string, "location": string } |
Champs | |
---|---|
expression |
Représentation textuelle d'une expression à l'aide de la syntaxe CEL (Common Expression Language). |
title |
Facultatif. Titre de l'expression, sous forme de chaîne courte décrivant son objectif. Il peut par exemple être utilisé dans les interfaces utilisateur qui permettent de saisir l'expression. |
description |
Facultatif. Description de l'expression. Il s'agit d'un texte plus long décrivant l'expression (par exemple, lorsque l'utilisateur passe la souris sur celle-ci dans une interface utilisateur). |
location |
Facultatif. Chaîne indiquant l'emplacement de l'expression pour la création de rapports d'erreurs (par exemple, un nom de fichier et une position dans le fichier). |
AuditConfig
Spécifie la configuration d'audit d'un service. La configuration détermine les types d'autorisations consignés et les identités, le cas échéant, qui sont exclues de la journalisation. Une AuditConfig doit avoir une ou plusieurs AuditLogConfigs.
Si des AuditConfigs existent pour allServices
et pour un service spécifique, l'union des deux AuditConfigs est utilisée pour ce service : les log_types spécifiés dans chaque AuditConfig sont activés, et les exempted_members de chaque AuditLogConfig sont exclus.
Exemple de stratégie avec plusieurs AuditConfigs :
{
"auditConfigs": [
{
"service": "allServices",
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
},
{
"logType": "ADMIN_READ"
}
]
},
{
"service": "sampleservice.googleapis.com",
"auditLogConfigs": [
{
"logType": "DATA_READ"
},
{
"logType": "DATA_WRITE",
"exemptedMembers": [
"user:aliya@example.com"
]
}
]
}
]
}
Pour sampleservice, cette stratégie active la journalisation DATA_READ, DATA_WRITE et ADMIN_READ. Il exclut également jose@example.com
de la journalisation DATA_READ et aliya@example.com
de la journalisation DATA_WRITE.
Représentation JSON |
---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
Champs | |
---|---|
service |
Spécifie un service qui sera activé pour la journalisation d'audit. Par exemple, |
auditLogConfigs[] |
Configuration de la journalisation de chaque type d'autorisation. |
AuditLogConfig
Permet la configuration de la journalisation d'un type d'autorisation. Exemple :
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
Ce code active la journalisation DATA_READ et DATA_WRITE, tout en excluant jose@example.com de la journalisation DATA_READ.
Représentation JSON |
---|
{
"logType": enum ( |
Champs | |
---|---|
logType |
Type de journal que cette configuration active. |
exemptedMembers[] |
Spécifie les identités qui ne génèrent pas de journalisation pour ce type d'autorisation. Ce champ utilise le même format que |
LogType
Liste des types d'autorisations valides pour lesquels la journalisation peut être configurée. Les écritures des administrateurs sont systématiquement consignées. Cela ne peut pas être modifié.
Enums | |
---|---|
LOG_TYPE_UNSPECIFIED |
Cas par défaut. Ce type ne devrait jamais être utilisé. |
ADMIN_READ |
L'administrateur lit des données. Exemple : CloudIAM getIamPolicy |
DATA_WRITE |
Des données sont écrites. Exemple : CloudSQL Users create |
DATA_READ |
Des données sont lues. Exemple : CloudSQL Users list |