- Représentation JSON
- Liaison
- Expr
- AuditConfig
- AuditLogConfig
- LogType
- Règle
- Action
- État
- Attr.
- Attr.
- Opérateur
- LogConfig
- CounterOptions
- CustomField
- DataAccessOptions
- LogMode
- CloudAuditOptions
- LogName
- AuthorizationLoggingOptions
- PermissionType
- PermissionType
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. |
rules[] |
Si plusieurs règles sont spécifiées, elles sont appliquées de la manière suivante: - Toutes les règles LOG correspondantes sont toujours appliquées. - Si une règle DENY/DENY_WITH_LOG correspond, l'autorisation est refusée. La journalisation sera appliquée si une ou plusieurs règles de correspondance nécessitent la journalisation. – Si une règle ALLOW/ALLOW_WITH_LOG correspond, l'autorisation est accordée. La journalisation sera appliquée si une ou plusieurs règles de correspondance nécessitent la journalisation. - Si aucune règle ne s'applique, l'autorisation est refusée. |
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 Pour en savoir plus sur les rôles et les autorisations IAM, consultez la documentation IAM. Pour obtenir la liste des rôles prédéfinis disponibles, cliquez ici. |
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. |
bindingId |
|
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 |
ignoreChildExemptions |
|
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 |
Règle
Règle à appliquer à une stratégie.
Représentation JSON |
---|
{ "description": string, "permissions": [ string ], "action": enum ( |
Champs | |
---|---|
description |
Description lisible de la règle. |
permissions[] |
Une autorisation est une chaîne au format " |
action |
Obligatoire |
in[] |
Si une ou plusieurs clauses "in" sont spécifiées, la règle correspond si le PRINCIPAL/AUTHORITY_SELECTOR figure dans au moins l'une de ces entrées. |
notIn[] |
Si une ou plusieurs clauses "notIn" sont spécifiées, la règle correspond si PRINCIPAL/AUTHORITY_SELECTOR ne figure dans aucune des entrées. |
conditions[] |
Restrictions supplémentaires à respecter. Toutes les conditions doivent être remplies pour que la règle corresponde. |
logConfig[] |
La configuration est renvoyée aux appelants de CheckPolicy pour toutes les entrées correspondant à l'action LOG. |
Action
Types d'actions des règles.
Enums | |
---|---|
NO_ACTION |
"Aucune action" par défaut. |
ALLOW |
Les entrées correspondantes accordent l'accès. |
ALLOW_WITH_LOG |
Les entrées correspondantes accordent l 'accès et l'appelant promet de consigner la requête conformément aux éléments log_configs renvoyés. |
DENY |
Les entrées correspondantes refusent l'accès. |
DENY_WITH_LOG |
Les entrées correspondantes refusent l 'accès et l'appelant promet de consigner la requête conformément aux log_configs renvoyés. |
LOG |
Les entrées correspondantes indiquent aux appelants IAM.Check de générer des journaux. |
Condition
Une condition à remplir.
Représentation JSON |
---|
{ "op": enum ( |
Champs | |
---|---|
op |
Opérateur avec lequel appliquer le sujet. |
values[] |
Objets de la condition. |
Champ d'union Subject . Objet de la condition. Subject ne peut être qu'un des éléments suivants : |
|
iam |
Attributs de confiance fournis par le système IAM |
sys |
Attributs de confiance fournis par tout service qui possède des ressources et utilise le système IAM pour le contrôle des accès. |
svc |
Attributs de confiance rejetés par le service. |
Attr
Types d'attributs.
Enums | |
---|---|
NO_ATTR |
Non-attribut par défaut. |
AUTHORITY |
Sélecteur de compte principal ou d'autorité (le cas échéant). |
ATTRIBUTION |
Le compte principal (même si un sélecteur d'autorité est présent), qui ne doit être utilisé que pour l'attribution, et non pour l'autorisation. |
SECURITY_REALM |
N'importe quel domaine de sécurité dans IAMContext (go/security-realms). Lorsqu'elle est utilisée avec IN, la condition indique "tous les domaines de la requête correspondent à l'une des valeurs données ; avec NOT_IN, "aucun des domaines ne correspond à l'une des valeurs données". Notez qu'une valeur peut être: - "self:campus" (c'est-à-dire les clients situés sur le même campus) - "self:metro" (c'est-à-dire les clients qui se trouvent dans la même agglomération) - "self:cloud-region" (c'est-à-dire les connexions de clients situés dans la même région cloud) - "self:prod-region" autorise les connexions depuis la même région cloud. Pour en savoir plus, consultez go/security-realms-glossary#guardian.) - "self" [OBSOLÈTE] (c'est-à-dire que vous autorisez les connexions de clients appartenant au même domaine de sécurité, dont la taille n'est actuellement pas garantie) ; un domaine (par exemple, "campus-abc") : groupe de domaines (par exemple, "realms-for-borg-cell-xx", voir: go/realm-groups). Une correspondance est déterminée par une vérification d'appartenance à un groupe de domaines effectuée par un objet RealmAclRep (go/realm-acl-howto). L'absence d'un domaine n'étant pas autorisée, les conditions de domaine ne peuvent être utilisées que dans un contexte "positif" (par exemple, ALLOW/IN ou DENY/NOT_IN). |
APPROVER |
Approbateur (différent du demandeur) qui a autorisé cette demande. Lorsqu'elle est utilisée avec IN, la condition indique que l'un des approbateurs associés à la demande correspond au compte principal spécifié ou est membre du groupe spécifié. Les approbateurs ne peuvent accorder qu'un accès supplémentaire et ne sont donc utilisés que dans un contexte strictement positif (par exemple, ALLOW/IN ou DENY/NOT_IN). |
JUSTIFICATION_TYPE |
Types de justifications fournies avec cette demande. Les valeurs de chaîne doivent correspondre aux noms d'énumération de security.credentials.JustificationType (par exemple, "MANUAL_STRING"). Il n'est pas autorisé d'accorder l'accès sans justification. Les conditions de justification ne peuvent donc être utilisées que dans un contexte "positif" (par exemple, ALLOW/IN ou DENY/NOT_IN). Il est normal d'utiliser plusieurs justifications (par exemple, un ID Buganizer et un motif saisi manuellement). |
CREDENTIALS_TYPE |
Type d'identifiants fourni avec cette requête. Les valeurs de chaîne doivent correspondre aux noms d'énumération de security_loas_l2.CredentialsType. Actuellement, seul CREDS_TYPE_EMERGENCY est pris en charge. L'absence d'un type d'identifiants n'est pas autorisée. Les conditions ne peuvent donc être utilisées que dans un contexte "positif" (par exemple, ALLOW/IN ou DENY/NOT_IN). |
CREDS_ASSERTION |
EXPÉRIMENTAL -- NE PAS UTILISER. Les conditions ne peuvent être utilisées que dans un contexte "positif" (par exemple, ALLOW/IN ou DENY/NOT_IN). |
Attr
Types d'attributs.
Enums | |
---|---|
NO_ATTR |
Type par défaut non-attribut |
REGION |
Région de la ressource |
SERVICE |
Nom du service |
NAME |
Nom de la ressource |
IP |
Adresse IP de l'appelant |
Opérateur
Types d'opérateurs de condition.
Enums | |
---|---|
NO_OP |
No-op par défaut. |
EQUALS |
OBSOLÈTE. Utilisez IN à la place. |
NOT_EQUALS |
OBSOLÈTE. Utilisez NOT_IN à la place. |
IN |
La condition est vraie si le sujet (ou tout élément de celui-ci s'il s'agit d'un ensemble) correspond à l'une des valeurs fournies. |
NOT_IN |
La condition est vraie si le sujet (ou chaque élément de celui-ci s'il s'agit d'un ensemble) ne correspond à aucune des valeurs fournies. |
DISCHARGED |
Le sujet est déchargé |
LogConfig
Spécifie le type de journal que l'appelant doit écrire
Représentation JSON |
---|
{ // Union field |
Champs | |
---|---|
Champ d'union type . Doit être défini. type ne peut être que l'un des éléments suivants: |
|
counter |
Options du compteur. |
dataAccess |
Options d'accès aux données |
cloudAudit |
d'audit Cloud. |
CounterOptions
Incrémentez un compteur Streamz avec les noms de métrique et de champ spécifiés.
Les noms de métriques doivent commencer par une barre oblique (/), être en minuscules uniquement et se terminer par "_count". Les noms de champs ne doivent pas contenir de barre oblique initiale. Les noms des métriques exportées sont précédés du préfixe "/iam/policy".
Les noms de champs correspondent aux paramètres de requête IAM, et les valeurs de champ correspondent à leurs valeurs respectives.
Noms de champs acceptés: - "authority", qui correspond à "[token]" si IAMContext.token est présent, sinon, valeur de IAMContext.authority_selector si présent, et - "iamPrincipal", représentation de IAMContext.principal, même en présence d'un jeton ou d'un sélecteur d'autorité, ou - "" (chaîne vide), générant un compteur sans champ.
Exemples: compteur { metric: "/debug_access_count" field: "iamPrincipal" } ==> incrémenter compteur /iam/policy/debug_access_count {iamPrincipal=[value of IAMContext.principal]}
Représentation JSON |
---|
{
"metric": string,
"field": string,
"customFields": [
{
object ( |
Champs | |
---|---|
metric |
Métrique à mettre à jour. |
field |
Valeur de champ à attribuer. |
customFields[] |
Champs personnalisés. |
CustomField
Champs personnalisés. Ceux-ci permettent de créer un compteur avec des paires champ/valeur arbitraires. Voir: go/rpcsp-custom-fields.
Représentation JSON |
---|
{ "name": string, "value": string } |
Champs | |
---|---|
name |
"name" correspond au nom du champ. |
value |
"valeur" correspond à la valeur du champ. Contrairement au champ CounterOptions.field, il est important que la valeur soit une constante qui ne soit pas dérivée de IAMContext. |
DataAccessOptions
Écrire un journal des accès aux données (Gin)
Représentation JSON |
---|
{
"logMode": enum ( |
Champs | |
---|---|
logMode |
|
isDirectAuth |
Indique que l'accès a été accordé par une stratégie d'attribution standard |
LogMode
Spécifie le comportement du client lors de la journalisation Gin.
Enums | |
---|---|
LOG_MODE_UNSPECIFIED |
Le client n'est pas tenu d'écrire un journal Gin partiel immédiatement après la vérification d'autorisation. Si le client choisit d'écrire une requête et échoue, il peut échouer (pour que l'opération puisse se poursuivre) ou échouer (traitement en tant que résultat "DENY"). |
LOG_FAIL_CLOSED |
L'opération de l'application dans le contexte de cette vérification d'autorisation ne peut être effectuée que si elle est correctement consignée dans Gin. Par exemple, la bibliothèque d'autorisation peut satisfaire à cette obligation en émettant une entrée de journal partielle au moment de la vérification des autorisations et en renvoyant ALLOW à l'application uniquement si l'opération réussit. Si une règle de correspondance comporte cette directive, mais que le client n'a pas indiqué qu'elle respecterait ces exigences, la vérification IAM entraînera un échec d'autorisation en définissant CheckPolicyResponse.success=false. |
CloudAuditOptions
Écrire un journal d'audit cloud
Représentation JSON |
---|
{ "logName": enum ( |
Champs | |
---|---|
logName |
LogName à renseigner dans l'enregistrement Cloud Audit Record. |
authorizationLoggingOptions |
Informations utilisées par le pipeline Cloud Audit Logging. Sera obsolète une fois la migration vers PermissionType terminée (b/201806118). |
permissionType |
Type associé à l'autorisation. |
LogName
Énumération des noms de journaux.
Enums | |
---|---|
UNSPECIFIED_LOG_NAME |
Valeur par défaut. Ne doit pas être utilisé. |
ADMIN_ACTIVITY |
Correspond à "cloudaudit.googleapis.com/activity" |
DATA_ACCESS |
Correspond à "cloudaudit.googleapis.com/dataAccess" |
AuthorizationLoggingOptions
Informations concernant les autorisations utilisées par Cloud Audit Logging.
Représentation JSON |
---|
{
"permissionType": enum ( |
Champs | |
---|---|
permissionType |
Type de l'autorisation vérifiée. |
PermissionType
Liste des types d'autorisations valides pouvant être vérifiés.
Enums | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
Valeur par défaut. Ne doit pas être utilisé. |
ADMIN_READ |
Lecture des données d'administration (métadonnées). |
ADMIN_WRITE |
Écriture de données d'administration (métadonnées). |
DATA_READ |
Lecture de données standards. |
DATA_WRITE |
Écriture de données standards. |
PermissionType
Liste des types d'autorisations valides pouvant être vérifiés.
Enums | |
---|---|
PERMISSION_TYPE_UNSPECIFIED |
Valeur par défaut. Ne doit pas être utilisé. |
ADMIN_READ |
Autorisations qui contrôlent la lecture de la configuration ou des métadonnées des ressources. |
ADMIN_WRITE |
Autorisations qui limitent la modification de la configuration des ressources ou des métadonnées. |
DATA_READ |
Autorisations qui limitent la lecture des données fournies par l'utilisateur. |
DATA_WRITE |
Autorisations qui limitent l'écriture de données fournies par l'utilisateur. |