Ce document explique comment configurer votre plugin Google Cloud SCC avec le module Log Shipper de la plateforme Netskope Cloud Exchange. Cette intégration permet l'ingestion d'alertes et d'événements Netskope dans votre locataire Goggle Cloud SCC au format JSON.
Conditions préalables
Pour compléter cette configuration, vous avez besoin de :
- Un locataire Netskope (ou plusieurs, par exemple des instances de production et de développement/test).
- Un locataire Netskope Cloud Exchange avec le plugin Tenant et le plugin Log Shipper déjà configurés.
- Les informations d'identification de Google Cloud Platform avec des rôles spécifiques sur un projet particulier.
- Connectivité à l'hôte suivant : Google Cloud SCC (https://console.cloud.google.com/)
Note
Vérifiez que les autorisations de votre instance Google Cloud SCC sont sécurisées et qu'elles ne sont pas configurées pour un accès public. N'autorisez l'accès à votre instance de stockage en nuage qu'à partir de votre hôte Cloud Exchange et de toute autre adresse nécessitant un accès.
Prise en charge du plugin Google Cloud SCC
Le plugin Google Cloud SCC est utilisé pour ingérer toutes les alertes et tous les événements au format JSON.
|
Soutien aux alertes | Oui |
| Soutien aux événements |
Oui |
|
Soutien WebTx |
NA |
Permissions
Les autorisations suivantes sont requises pour le compte de service au niveau de l'organisation.
- Éditeur de sources du centre de sécurité
- Éditeur de conclusions du centre de sécurité
- Resource Manager get projects (Rôle : Browser)
here
Détails de l'API
Ce plugin utilise des bibliothèques Python pour s'authentifier auprès de l'API Google Cloud.
- Bibliothèque : Bibliothèque d'authentification Google pour Python (google-auth).
- Utilisation : La bibliothèque Google Authentication pour Python (google-auth) permet de s'authentifier auprès des API de Google.
Create a new session with credentials
self.gcp_scope = ["https://www.googleapis.com/auth/cloud-platform"]
self.creds = (
service_account.Credentials.from_service_account_info(
json.loads(self.configuration["key_file"])
)
)
scoped = self.creds.with_scopes(self.gcp_scope)
self.gcp_session = request.AuthorizedSession(scoped)
self.gcp_session.proxies = self.proxy
Google Cloud GET API Request
response = self.gcp_session.get(
url,
headers=headers,
params=params
)
Google Cloud POST API Request
response = self.gcp_session.post(
url,
params=param,
json=data,
headers=headers
)
API du gestionnaire de ressources
| Point final de l'API | Méthode | Cas d'utilisation |
|---|---|---|
| /v1/projets/{projetId} | OBTENIR | Récupère le projet identifié par le projectId spécifié. |
L'URL de base https://cloudresourcemanager.googleapis.com est la même pour toutes les API de Resource Manager.
Obtenir un projet
API Endpoint: <Base URL>/v1/projects/{projectId}
Method: ALLEZ
Sample API Response:
{
"projectNumber": "",
"projectId": "",
"lifecycleState": "ACTIVE",
"name": "projectName",
"createTime": "2024-04-04T10:01:07.553347Z",
"parent": {
"type": "organization",
"id": ""
}
}
API du centre de commandement de sécurité
| Point final de l'API | Méthode | Cas d'utilisation |
|---|---|---|
| /v1/organisations/{organisationId}/sources/{sourceId}/findings | OBTENIR | Liste des résultats d'une organisation ou d'une source. |
| /v1/organisations/{organisationId}/sources/{sourceId}/findings | PUBLIER | Crée une recherche. La source correspondante doit exister pour que la création de la recherche réussisse. |
| /v1/organisations{organisationId}/sources/{sourceId} | OBTENIR | Obtenez une source. |
| /v1/organisations/{organisationId}/sources/{sourceId} | PUBLIER | Crée une source. |
The Base URL https://securitycenter.googleapis.com is the same for all Security Command Center APIs.
Liste des résultats
API endpoint: <Base URL>/v1/organizations/{organizationId}/sources/{sourceId}/findings
Method: ALLEZ
Sample API Response:
{
"listFindingsResults": [
{
"finding": {
"name": "organizations//sources//findings/00087f8800a911ef94c60242c0a8f104",
"parent": "organizations//sources/",
"resourceName": "//cloudresourcemanager.googleapis.com/projects/",
"state": "ACTIVE",
"category": "ctep",
"externalUri": "https://drive.google.com/open?id=14WLyjF82rGg",
"sourceProperties": {
"cci": "29",
"timestamp": "1713791120",
"url": "https://drive.google.com/open?id=14WLyjF82rGg",
"alert_type": "ctep",
"tenant_name": "CLS"
},
"securityMarks": {
"name": "organizations//sources//findings/00087f8800a911ef94c60242c0a8f104/securityMarks"
},
"eventTime": "2024-04-22T13:05:20Z",
"createTime": "2024-04-22T13:05:34.141Z",
"canonicalName": "projects//sources//findings/00087f8800a911ef94c60242c0a8f104",
"mute": "MUTED",
"muteUpdateTime": "2024-04-22T13:05:35.371Z",
"muteInitiator": "Muted by mute rule organizations//muteConfigs/rule8",
"contacts": {
"security": {
"contacts": [
{
"email": "systems@abc.com"
}
]
},
"technical": {
"contacts": [
{
"email": "systems@abc.com"
}
]
}
},
"parentDisplayName": "test"
},
"resource": {
"name": "//cloudresourcemanager.googleapis.com/projects/",
"projectName": "//cloudresourcemanager.googleapis.com/projects/",
"projectDisplayName": "",
"parentName": "//cloudresourcemanager.googleapis.com/organizations/",
"parentDisplayName": "abc.com",
"type": "google.cloud.resourcemanager.Project",
"displayName": "",
"cloudProvider": "GOOGLE_CLOUD_PLATFORM",
"organization": "organizations/",
"service": "cloudresourcemanager.googleapis.com",
"resourcePath": {
"nodes": [
{
"nodeType": "GCP_PROJECT",
"id": "projects/",
"displayName": ""
},
{
"nodeType": "GCP_ORGANIZATION",
"id": "organizations/"
}
]
},
"resourcePathString": "organizations//projects/"
}
}
],
"readTime": "2024-04-22T13:31:00.144Z",
"nextPageToken": "CsoD3cy7qgAx8Qqf…",
"totalSize": 22210
}
Créer une recherche
API endpoint: <Base URL>/v1/organizations/{organizationId}/sources/{sourceId}/findings
Method: PUBLICATION
Body:
{
"name": "/findings/00087f8800a911ef94c60242c0a8f104",
"parent": "",
"resourceName": "//cloudresourcemanager.googleapis.com/projects/",
"state": "ACTIVE",
"category": "ctep",
"eventTime": "2024-04-10T07:19:30Z",
"createTime": "2024-04-10T07:19:31.208001Z",
…
}
Sample API Response:
{
"name": "organizations//sources//findings/00087f8800a911ef94c60242c0a8f104",
"parent": "organizations//sources/",
"resourceName": "//cloudresourcemanager.googleapis.com/projects/",
"state": "ACTIVE",
"category": "ctep",
"securityMarks": {
"name": "organizations//sources//findings/00087f8800a911ef94c60242c0a8f104/securityMarks"
},
"eventTime": "2024-04-10T07:19:30Z",
"createTime": "2024-04-22T05:46:05.439Z",
"canonicalName": "projects//sources//locations/global/findings/00087f8800a911ef94c60242c0a8f104",
"mute": "MUTED",
"muteUpdateTime": "2024-04-22T05:46:06.580Z",
"muteInitiator": "Muted by mute rule organizations//muteConfigs/rule8",
"contacts": {
"security": {
"contacts": [
{
"email": "systems@crestdatasys.com"
}
]
},
"technical": {
"contacts": [
{
"email": "systems@crestdatasys.com"
}
]
}
},
"parentDisplayName": "test"
}
Obtenir une source
API endpoint: <Base URL>/v1/organizations{organizationId}/sources/{sourceId}
Method: GET
Sample API Response:
{
"name": "organizations//sources/",
"displayName": "Source Name",
"description": "Source description"
}
Créer une source
API Endpoint: <Base URL>/v1/organizations{organizationId}/sources/{sourceId}
Method: POST
Body:
{
"name": "Name of source",
"displayName": "Unique name of the source",
"description": "Description of the source"
}
Sample API Response:
{
"name": "organizations/<org_id>/sources/<source_id>",
"displayName": "Unique source Name",
"description": "Source description"
}
Agent utilisateur
Netskope-ce-5.0.1-cls-google-cloud-scc-v2.1.0
Workflow
- Créez un compte de service Google Cloud SCC.
- Configurez le plugin Google Cloud SCC.
- Configurez les règles commerciales de Log Shipper pour Google Cloud SCC.
- Configurez les correspondances SIEM de Log Shipper pour Google Cloud SCC.
- Validez le plugin Google Cloud SCC.
Cliquer sur « play » pour regarder une vidéo.
Créer un compte pour le service Google Cloud SCC
- Connectez-vous à Google Cloud Platform.

- Va sur IAM & Admin > Service Accounts.

- Cliquez sur + Create Service Account.
- Saisissez un nom de compte Service et une description du compte Service, puis cliquez sur Create and Continue.

- Ajoutez les autorisations nécessaires.

- Cliquez sur Continue.

- Cliquez sur Done.
- Cliquez sur les 3 points sous Action.

- Cliquez sur Manage Keys.

- Cliquez sur Add Key puis sur Create new key.

- Select JSON et cliquez sur Create pour télécharger la clé sur votre périphérique local.

- Rendez-vous sur https://cloud.google.com/security-command-center/docs/reference/rest/v1beta1/organizations.sources/create

- Cliquez Try It. Entrer les données du parent et demander le corps, cochez Google OAuth 2.0 et API Key, puis cliquez sur Execute.

- Notez l'ID de la source sauvegardée spécifiée dans le nom dans la réponse.

Configurer le plugin Google Cloud SCC
- Dans Cloud Exchange, allez à Settings > Plugins.
- Cherchez et sélectionnez la case Google Cloud SCC pour ouvrir les pages de création du plugin.

- Saisissez un nom de configuration et assurez-vous que le fichier de mappage Google Cloud SCC par défaut est sélectionné.
- Désactivez le bouton bascule pour transformer les journaux afin d'ingérer les données au format JSON.

- Cliquez sur Next.
- Enter values for these parameters:
- ID de l'organisation : ID de l'organisation du GCP dans lequel les données seront ingérées.
- Source ID : ID de l'organisation du GCP dans lequel les données seront ingérées.
- Fichier clé : Fichier clé du compte de service de GCP.

- Cliquez Save. Votre plugin apparaîtra sur la page Cloud Log Shipper > Plugins.

Configurer les règles commerciales de Log Shipper pour Google Cloud SCC
- Aller à Log Shipper > Business Rules.

- Par défaut, une règle métier filtre toutes les alertes et tous les événements. Si vous souhaitez filtrer certains types d'alertes ou d'événements, cliquez sur Create New Rule et configurez une New règle métier en ajoutant un nom de règle et en sélectionnant des filtres.

- Cliquez sur Save.

Configurer les correspondances SIEM de Log Shipper pour Google Cloud SCC
- Allez à Log Shipper > SIEM Mappings et cliquez sur Add SIEM Mapping.

- Select une configuration de la source, une règle de gestion et une configuration de la destination.
- Cliquez sur Save.

Valider le plugin Google Cloud SCC
Valider le retrait
Pour valider la récupération des événements et alertes du tenant Netskope :
Accédez à Logging dans Cloud Exchange et recherchez les journaux récupérés.

Valider le push
Pour valider le push dans Cloud Exchange, allez sur Logging et recherchez les événements ingérés, les alertes avec le filtre message contains ingested. Les journaux ingérés seront filtrés.


Pour valider le push dans Google Cloud SCC :
- Connectez-vous à Google Cloud Platform.

- Cliquez Findings.

- Select Show inactive et Show muted.



- Cliquez sur un événement ou une alerte.

- Cliquez Source Properties.

- Une autre façon de vérifier est de cliquer sur JSON et sous Propriétés sources, vous pouvez trouver les données.


Dépannage
Si vous rencontrez des difficultés lors de la mise à jour du plugin Google Cloud SCC
Bien que tous les paramètres aient été définis et que vous ayez cliqué sur le bouton d'enregistrement, une erreur peut se produire, peut-être parce que le bouton de transformation des journaux a été activé au lieu d'être désactivé.
What to do:
- Allez sur la page Log Shipper > Plugin .

- Modifiez le plugin Google Cloud SCC et désactivez l'option de transformation des journaux.

- Cliquez sur Save.
- Enable the plugin.


