Netskope GCP CSA uses a service account to make API calls on customers’ behalf for the compliance auditing. Customer has a GCP resource hierarchy similar to the following:
Le compte de service fourni à Netskope peut avoir une attribution de rôle (Project > Browser) à l’échelle de l’organisation (testkope01.com, voir l’image ci-dessous). Cependant, il peut y avoir un scénario où un client souhaite exclure un ou plusieurs dossiers spécifiques (Archive), et tous les dossiers ou projets en dessous ne devraient pas apparaître dans le, produit CSA Netskope tout en conservant l’attribution du rôle d’organisation mère.

IAM Policy Bindings
In GCP, IAM policy bindings manage access control by defining who (identity) has what access (role) for which resource. An IAM policy defines and enforces what roles are granted to which members, and this policy is attached to a resource.
Cependant, les règles IAM sont uniquement additives et ne peuvent pas refuser des autorisations, comme par exemple refuser Project > Browser pour Archive Folder.
One solution which GCP provides with IAM policy bindings is the ability to set a condition which allows to define and enforce conditional, attribute-based access control for Google Cloud resources. The condition object has the following structure:
"condition": {
"title": ...
"description": ...
"expression": ...
}
Le champ d’expression est requis. Il définit une expression logique basée sur des attributs à l’aide d’un sous-ensemble du Common Expression Language (CEL).
Par exemple, n'autorisez l'accès qu'aux fichiers de stockage en nuage dont le nom commence par un préfixe donné :
resource.type == "storage.googleapis.com/Bucket" &&
resource.name.startsWith("projects/_/buckets/exampleco-site-assets-")
Étiquetage des ressources
We would be using IAM Policy Binding Condition expression along with resource tagging to achieve the exclusion use-case.
Une balise est une paire clé-valeur attachée à une organisation, un dossier ou un projet, qui peut accorder des rôles IAM sous condition qu’une ressource possède ou non une étiquette spécifique.
D'autres ressources héritent des valeurs de balise de leur organisation, de leurs dossiers et de leur projet parents, permettant ainsi aux balises de gérer l'accès à n'importe quelle ressource Google Cloud.
Puisque cette fonctionnalité est couverte par les Conditions d’utilisation de Google Cloud Platform avant les Offres Générales , veuillez exécuter la mise à jour des composants gcloud avant l’une des étapes ci-dessous.
-
Create tag key for customer organisation
gcloud alpha resource-manager tags keys create CSA --parent=organizations/1234567890
Expected Response:
Waiting for TagKey [CSA] to be created...done. createTime: '2021-02-11T10:55:15.548590Z' etag: Fh4S/yQ37EoMRyqu048tSA== name: tagKeys/830385501964 namespacedName: 1234567890/CSA parent: organizations/1234567890 shortName: CSA updateTime: '2021-02-11T10:55:18.850163Z
Notez le nom de la clé de marquage en surbrillance. -
Créez une valeur de balise pour la clé de balise créée à l'étape 1 :
gcloud alpha resource-manager tags values create NOT --parent=tagKeys/830385501964
Expected Response:
Waiting for TagValue [NOT] to be created...done. createTime: '2021-02-11T11:02:28.552982Z' etag: Xj9So/FDGdu+qtzTyVBXQA== name: tagValues/924420592246 namespacedName: 1234567890/CSA/NOT parent: tagKeys/830385501964 shortName: NOT updateTime: '2021-02-11T11:02:31.087742Z'
Notez le nom de la valeur de la balise en surbrillance. -
Create tag binding at Archive Folder scope
gcloud alpha resource-manager tags bindings create --tag-value=tagValues/924420592246 --parent=//cloudresourcemanager.googleapis.com/folders/0987654321
Where 0987654321 is the folder id of the Archive folder
Expected Response:
done: true response: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Ffolders%2F0987654321/tagValues/924420592246 parent: //cloudresourcemanager.googleapis.com/folders/0987654321 tagValue: tagValues/924420592246
-
Vérifier si le TAG BINDING est appliqué
gcloud alpha resource-manager tags bindings list --parent=//cloudresourcemanager.googleapis.com/folders/0987654321
Expected Response:
tagBindings: - name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Ffolders%2F0987654321/tagValues/924420592246 parent: //cloudresourcemanager.googleapis.com/folders/0987654321 tagValue: tagValues/924420592246
Mise à jour des autorisations du compte de service Netskope
Login to Google Cloud Console and edit Netskope service account’s role assignment at Organisation scope.
-
Naviguez sur la page IAM & Admin > IAM de l'organisation et localisez l'adresse électronique du compte de service Netskope :

-
Modifiez la liaison de stratégie IAM du compte de service pour ajouter une condition à chacune des attributions de rôle (Project > Browser, IAM > Security Reviewer, Bigquery > Bigquery Metadata Viewer, Organization Policy > Organisation Policy Viewer).


-
Passez à l'onglet Éditeur de conditions et saisissez une expression CEL qui ressemble à ceci :
!(resource.matchTagId('tagKeys/830385501964', 'tagValues/924420592246'))
Ici, tagKeys/830385501964 est le tag key name et tagValues/924420592246 est le tag value name qui a été noté précédemment et qui a été appliqué au dossier d'archives. -
Click on Save and update the IAM policy.
Le dossier d'archivage indésirable et le projet/les ressources en dessous ne seront plus accessibles au compte de service Netskope et n'apparaîtront pas dans l'analyse CSA.

