mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-31 23:15:48 -08:00
Translated ['.github/pull_request_template.md', 'src/pentesting-cloud/az
This commit is contained in:
@@ -1,207 +1,198 @@
|
||||
# GCP - Basic Information
|
||||
# GCP - Informazioni di base
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## **Resource hierarchy**
|
||||
## **Gerarchia delle risorse**
|
||||
|
||||
Google Cloud uses a [Resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy) that is similar, conceptually, to that of a traditional filesystem. This provides a logical parent/child workflow with specific attachment points for policies and permissions.
|
||||
|
||||
At a high level, it looks like this:
|
||||
Google Cloud utilizza una [Gerarchia delle risorse](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy) che è simile, concettualmente, a quella di un filesystem tradizionale. Questo fornisce un flusso di lavoro logico genitore/figlio con punti di attacco specifici per politiche e permessi.
|
||||
|
||||
A un livello alto, appare così:
|
||||
```
|
||||
Organization
|
||||
--> Folders
|
||||
--> Projects
|
||||
--> Resources
|
||||
--> Projects
|
||||
--> Resources
|
||||
```
|
||||
|
||||
A virtual machine (called a Compute Instance) is a resource. A resource resides in a project, probably alongside other Compute Instances, storage buckets, etc.
|
||||
Una macchina virtuale (chiamata Compute Instance) è una risorsa. Una risorsa risiede in un progetto, probabilmente insieme ad altre Compute Instances, bucket di archiviazione, ecc.
|
||||
|
||||
<figure><img src="../../../images/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://cloud.google.com/static/resource-manager/img/cloud-hierarchy.svg">https://cloud.google.com/static/resource-manager/img/cloud-hierarchy.svg</a></p></figcaption></figure>
|
||||
|
||||
## **Projects Migration**
|
||||
## **Migrazione dei Progetti**
|
||||
|
||||
It's possible to **migrate a project without any organization** to an organization with the permissions `roles/resourcemanager.projectCreator` and `roles/resourcemanager.projectMover`. If the project is inside other organization, it's needed to contact GCP support to **move them out of the organization first**. For more info check [**this**](https://medium.com/google-cloud/migrating-a-project-from-one-organization-to-another-gcp-4b37a86dd9e6).
|
||||
È possibile **migrare un progetto senza alcuna organizzazione** a un'organizzazione con i permessi `roles/resourcemanager.projectCreator` e `roles/resourcemanager.projectMover`. Se il progetto si trova all'interno di un'altra organizzazione, è necessario contattare il supporto GCP per **spostarlo fuori dall'organizzazione prima**. Per ulteriori informazioni, consulta [**questo**](https://medium.com/google-cloud/migrating-a-project-from-one-organization-to-another-gcp-4b37a86dd9e6).
|
||||
|
||||
## **Organization Policies**
|
||||
## **Politiche dell'Organizzazione**
|
||||
|
||||
Allow to centralize control over your organization's cloud resources:
|
||||
Consentono di centralizzare il controllo sulle risorse cloud della tua organizzazione:
|
||||
|
||||
- Centralize control to **configure restrictions** on how your organization’s resources can be used.
|
||||
- Define and establish **guardrails** for your development teams to stay within compliance boundaries.
|
||||
- Help project owners and their teams move quickly without worry of breaking compliance.
|
||||
- Centralizza il controllo per **configurare restrizioni** su come possono essere utilizzate le risorse della tua organizzazione.
|
||||
- Definisci e stabilisci **guardrail** per i tuoi team di sviluppo per rimanere all'interno dei confini di conformità.
|
||||
- Aiuta i proprietari dei progetti e i loro team a muoversi rapidamente senza preoccuparsi di violare la conformità.
|
||||
|
||||
These policies can be created to **affect the complete organization, folder(s) or project(s)**. Descendants of the targeted resource hierarchy node **inherit the organization policy**.
|
||||
Queste politiche possono essere create per **influenzare l'intera organizzazione, la cartella o il progetto**. I discendenti del nodo della gerarchia delle risorse mirate **ereditano la politica dell'organizzazione**.
|
||||
|
||||
In order to **define** an organization policy, **you choose a** [**constraint**](https://cloud.google.com/resource-manager/docs/organization-policy/overview#constraints), which is a particular type of restriction against either a Google Cloud service or a group of Google Cloud services. You **configure that constraint with your desired restrictions**.
|
||||
Per **definire** una politica dell'organizzazione, **scegli un** [**vincolo**](https://cloud.google.com/resource-manager/docs/organization-policy/overview#constraints), che è un particolare tipo di restrizione contro un servizio Google Cloud o un gruppo di servizi Google Cloud. **Configuri quel vincolo con le restrizioni desiderate**.
|
||||
|
||||
<figure><img src="../../../images/image (217).png" alt=""><figcaption><p><a href="https://cloud.google.com/resource-manager/img/org-policy-concepts.svg">https://cloud.google.com/resource-manager/img/org-policy-concepts.svg</a></p></figcaption></figure>
|
||||
|
||||
#### Common use cases <a href="#common_use_cases" id="common_use_cases"></a>
|
||||
#### Casi d'uso comuni <a href="#common_use_cases" id="common_use_cases"></a>
|
||||
|
||||
- Limit resource sharing based on domain.
|
||||
- Limit the usage of Identity and Access Management service accounts.
|
||||
- Restrict the physical location of newly created resources.
|
||||
- Disable service account creation
|
||||
- Limitare la condivisione delle risorse in base al dominio.
|
||||
- Limitare l'uso degli account di servizio di Identity and Access Management.
|
||||
- Restrigere la posizione fisica delle risorse appena create.
|
||||
- Disabilitare la creazione di account di servizio.
|
||||
|
||||
<figure><img src="../../../images/image (172).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
There are many more constraints that give you fine-grained control of your organization's resources. For **more information, see the** [**list of all Organization Policy Service constraints**](https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints)**.**
|
||||
Ci sono molti altri vincoli che ti danno un controllo dettagliato sulle risorse della tua organizzazione. Per **maggiori informazioni, consulta la** [**lista di tutti i vincoli del Servizio Politica dell'Organizzazione**](https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints)**.**
|
||||
|
||||
### **Default Organization Policies**
|
||||
### **Politiche di Default dell'Organizzazione**
|
||||
|
||||
<details>
|
||||
|
||||
<summary>These are the policies that Google will add by default when setting up your GCP organization:</summary>
|
||||
<summary>Queste sono le politiche che Google aggiungerà per impostazione predefinita quando configuri la tua organizzazione GCP:</summary>
|
||||
|
||||
**Access Management Policies**
|
||||
**Politiche di Gestione degli Accessi**
|
||||
|
||||
- **Domain restricted contacts:** Prevents adding users to Essential Contacts outside your specified domains. This limits Essential Contacts to only allow managed user identities in your selected domains to receive platform notifications.
|
||||
- **Domain restricted sharing:** Prevents adding users to IAM policies outside your specified domains. This limits IAM policies to only allow managed user identities in your selected domains to access resources inside this organization.
|
||||
- **Public access prevention:** Prevents Cloud Storage buckets from being exposed to the public. This ensures that a developer can't configure Cloud Storage buckets to have unauthenticated internet access.
|
||||
- **Uniform bucket level access:** Prevents object-level access control lists (ACLs) in Cloud Storage buckets. This simplifies your access management by applying IAM policies consistently across all objects in Cloud Storage buckets.
|
||||
- **Require OS login:** VMs created in new projects will have OS Login enabled. This lets you manage SSH access to your instances using IAM without needing to create and manage individual SSH keys.
|
||||
- **Contatti con dominio ristretto:** Impedisce di aggiungere utenti ai Contatti Essenziali al di fuori dei domini specificati. Questo limita i Contatti Essenziali a consentire solo identità utente gestite nei domini selezionati di ricevere notifiche della piattaforma.
|
||||
- **Condivisione con dominio ristretto:** Impedisce di aggiungere utenti alle politiche IAM al di fuori dei domini specificati. Questo limita le politiche IAM a consentire solo identità utente gestite nei domini selezionati di accedere alle risorse all'interno di questa organizzazione.
|
||||
- **Prevenzione dell'accesso pubblico:** Impedisce che i bucket di Cloud Storage siano esposti al pubblico. Questo garantisce che uno sviluppatore non possa configurare i bucket di Cloud Storage per avere accesso a Internet non autenticato.
|
||||
- **Accesso uniforme a livello di bucket:** Impedisce le liste di controllo degli accessi (ACL) a livello di oggetto nei bucket di Cloud Storage. Questo semplifica la gestione degli accessi applicando le politiche IAM in modo coerente su tutti gli oggetti nei bucket di Cloud Storage.
|
||||
- **Richiedere accesso OS:** Le VM create in nuovi progetti avranno l'accesso OS abilitato. Questo ti consente di gestire l'accesso SSH alle tue istanze utilizzando IAM senza dover creare e gestire singole chiavi SSH.
|
||||
|
||||
**Additional security policies for service accounts**
|
||||
**Politiche di sicurezza aggiuntive per gli account di servizio**
|
||||
|
||||
- **Disable automatic IAM grants**: Prevents the default App Engine and Compute Engine service accounts from automatically being granted the Editor IAM role on a project at creation. This ensures service accounts don't receive overly-permissive IAM roles upon creation.
|
||||
- **Disable service account key creation**: Prevents the creation of public service account keys. This helps reduce the risk of exposing persistent credentials.
|
||||
- **Disable service account key upload**: Prevents the uploading of public service account keys. This helps reduce the risk of leaked or reused key material.
|
||||
- **Disabilita le concessioni IAM automatiche**: Impedisce che gli account di servizio predefiniti di App Engine e Compute Engine vengano automaticamente concessi il ruolo IAM Editor su un progetto alla creazione. Questo garantisce che gli account di servizio non ricevano ruoli IAM eccessivamente permissivi al momento della creazione.
|
||||
- **Disabilita la creazione di chiavi per account di servizio**: Impedisce la creazione di chiavi pubbliche per account di servizio. Questo aiuta a ridurre il rischio di esposizione di credenziali persistenti.
|
||||
- **Disabilita il caricamento di chiavi per account di servizio**: Impedisce il caricamento di chiavi pubbliche per account di servizio. Questo aiuta a ridurre il rischio di materiale di chiave trapelato o riutilizzato.
|
||||
|
||||
**Secure VPC network configuration policies**
|
||||
**Politiche di configurazione della rete VPC sicura**
|
||||
|
||||
- **Define allowed external IPs for VM instances**: Prevents the creation of Compute instances with a public IP, which can expose them to internet traffic.
|
||||
- **Definisci IP esterni consentiti per le istanze VM**: Impedisce la creazione di istanze Compute con un IP pubblico, che può esporle al traffico Internet.
|
||||
|
||||
* **Disable VM nested virtualization**: Prevents the creation of nested VMs on Compute Engine VMs. This decreases the security risk of having unmonitored nested VMs.
|
||||
* **Disabilita la virtualizzazione nidificata delle VM**: Impedisce la creazione di VM nidificate su VM di Compute Engine. Questo riduce il rischio di sicurezza di avere VM nidificate non monitorate.
|
||||
|
||||
- **Disable VM serial port:** Prevents serial port access to Compute Engine VMs. This prevents input to a server’s serial port using the Compute Engine API.
|
||||
- **Disabilita la porta seriale delle VM:** Impedisce l'accesso alla porta seriale delle VM di Compute Engine. Questo impedisce l'input alla porta seriale di un server utilizzando l'API di Compute Engine.
|
||||
|
||||
* **Restrict authorized networks on Cloud SQL instances:** Prevents public or non-internal network ranges from accessing your Cloud SQL databases.
|
||||
* **Restrigi le reti autorizzate sulle istanze Cloud SQL:** Impedisce a intervalli di rete pubblici o non interni di accedere ai tuoi database Cloud SQL.
|
||||
|
||||
- **Restrict Protocol Forwarding Based on type of IP Address:** Prevents VM protocol forwarding for external IP addresses.
|
||||
- **Restrigi l'inoltro dei protocolli in base al tipo di indirizzo IP:** Impedisce l'inoltro dei protocolli VM per indirizzi IP esterni.
|
||||
|
||||
* **Restrict Public IP access on Cloud SQL instances:** Prevents the creation of Cloud SQL instances with a public IP, which can expose them to internet traffic.
|
||||
* **Restrigi l'accesso IP pubblico sulle istanze Cloud SQL:** Impedisce la creazione di istanze Cloud SQL con un IP pubblico, che può esporle al traffico Internet.
|
||||
|
||||
- **Restrict shared VPC project lien removal:** Prevents the accidental deletion of Shared VPC host projects.
|
||||
- **Restrigi la rimozione del vincolo del progetto VPC condiviso:** Impedisce l'eliminazione accidentale dei progetti host VPC condivisi.
|
||||
|
||||
* **Sets the internal DNS setting for new projects to Zonal DNS Only:** Prevents the use of a legacy DNS setting that has reduced service availability.
|
||||
* **Imposta l'impostazione DNS interna per i nuovi progetti su DNS Zonale Solo:** Impedisce l'uso di un'impostazione DNS legacy che ha ridotto la disponibilità del servizio.
|
||||
|
||||
- **Skip default network creation:** Prevents automatic creation of the default VPC network and related resources. This avoids overly-permissive default firewall rules.
|
||||
- **Salta la creazione della rete predefinita:** Impedisce la creazione automatica della rete VPC predefinita e delle risorse correlate. Questo evita regole firewall predefinite eccessivamente permissive.
|
||||
|
||||
* **Disable VPC External IPv6 usage:** Prevents the creation of external IPv6 subnets, which can be exposed to unauthorized internet access.
|
||||
* **Disabilita l'uso di IPv6 esterni VPC:** Impedisce la creazione di subnet IPv6 esterne, che possono essere esposte a accessi non autorizzati a Internet.
|
||||
|
||||
</details>
|
||||
|
||||
## **IAM Roles**
|
||||
## **Ruoli IAM**
|
||||
|
||||
These are like IAM policies in AWS as **each role contains a set of permissions.**
|
||||
Questi sono simili alle politiche IAM in AWS poiché **ogni ruolo contiene un insieme di permessi.**
|
||||
|
||||
However, unlike in AWS, there is **no centralized repo** of roles. Instead of that, **resources give X access roles to Y principals**, and the only way to find out who has access to a resource is to use the **`get-iam-policy` method over that resource**.\
|
||||
This could be a problem because this means that the only way to find out **which permissions a principal has is to ask every resource who is it giving permissions to**, and a user might not have permissions to get permissions from all resources.
|
||||
Tuttavia, a differenza di AWS, non esiste **un repository centralizzato** di ruoli. Invece, **le risorse danno X ruoli di accesso a Y principi**, e l'unico modo per scoprire chi ha accesso a una risorsa è utilizzare il **metodo `get-iam-policy` su quella risorsa**.\
|
||||
Questo potrebbe essere un problema perché significa che l'unico modo per scoprire **quali permessi ha un principio è chiedere a ogni risorsa a chi sta dando permessi**, e un utente potrebbe non avere permessi per ottenere permessi da tutte le risorse.
|
||||
|
||||
There are **three types** of roles in IAM:
|
||||
Ci sono **tre tipi** di ruoli in IAM:
|
||||
|
||||
- **Basic/Primitive roles**, which include the **Owner**, **Editor**, and **Viewer** roles that existed prior to the introduction of IAM.
|
||||
- **Predefined roles**, which provide granular access for a specific service and are managed by Google Cloud. There are a lot of predefined roles, you can **see all of them with the privileges they have** [**here**](https://cloud.google.com/iam/docs/understanding-roles#predefined_roles).
|
||||
- **Custom roles**, which provide granular access according to a user-specified list of permissions.
|
||||
- **Ruoli di base/primitive**, che includono i ruoli **Owner**, **Editor** e **Viewer** che esistevano prima dell'introduzione di IAM.
|
||||
- **Ruoli predefiniti**, che forniscono accesso granulare per un servizio specifico e sono gestiti da Google Cloud. Ci sono molti ruoli predefiniti, puoi **vedere tutti loro con i privilegi che hanno** [**qui**](https://cloud.google.com/iam/docs/understanding-roles#predefined_roles).
|
||||
- **Ruoli personalizzati**, che forniscono accesso granulare secondo un elenco di permessi specificato dall'utente.
|
||||
|
||||
There are thousands of permissions in GCP. In order to check if a role has a permissions you can [**search the permission here**](https://cloud.google.com/iam/docs/permissions-reference) and see which roles have it.
|
||||
Ci sono migliaia di permessi in GCP. Per controllare se un ruolo ha un permesso, puoi [**cercare il permesso qui**](https://cloud.google.com/iam/docs/permissions-reference) e vedere quali ruoli lo hanno.
|
||||
|
||||
You can also [**search here predefined roles**](https://cloud.google.com/iam/docs/understanding-roles#product_specific_documentation) **offered by each product.** Note that some **roles** cannot be attached to users and **only to SAs because some permissions** they contain.\
|
||||
Moreover, note that **permissions** will only **take effect** if they are **attached to the relevant service.**
|
||||
Puoi anche [**cercare qui i ruoli predefiniti**](https://cloud.google.com/iam/docs/understanding-roles#product_specific_documentation) **offerti da ciascun prodotto.** Nota che alcuni **ruoli** non possono essere assegnati agli utenti e **solo agli SAs a causa di alcuni permessi** che contengono.\
|
||||
Inoltre, nota che i **permessi** avranno effetto solo se sono **allegati al servizio pertinente.**
|
||||
|
||||
Or check if a **custom role can use a** [**specific permission in here**](https://cloud.google.com/iam/docs/custom-roles-permissions-support)**.**
|
||||
Oppure controlla se un **ruolo personalizzato può utilizzare un** [**permesso specifico qui**](https://cloud.google.com/iam/docs/custom-roles-permissions-support)**.**
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-iam-and-org-policies-enum.md
|
||||
{{#endref}}
|
||||
|
||||
## Users <a href="#default-credentials" id="default-credentials"></a>
|
||||
## Utenti <a href="#default-credentials" id="default-credentials"></a>
|
||||
|
||||
In **GCP console** there **isn't any Users or Groups** management, that is done in **Google Workspace**. Although you could synchronize a different identity provider in Google Workspace.
|
||||
Nella **console GCP** non **c'è alcuna gestione di Utenti o Gruppi**, che viene effettuata in **Google Workspace**. Anche se potresti sincronizzare un diverso provider di identità in Google Workspace.
|
||||
|
||||
You can access Workspaces **users and groups in** [**https://admin.google.com**](https://admin.google.com/).
|
||||
Puoi accedere agli **utenti e gruppi di Workspaces** in [**https://admin.google.com**](https://admin.google.com/).
|
||||
|
||||
**MFA** can be **forced** to Workspaces users, however, an **attacker** could use a token to access GCP **via cli which won't be protected by MFA** (it will be protected by MFA only when the user logins to generate it: `gcloud auth login`).
|
||||
**MFA** può essere **forzata** per gli utenti di Workspaces, tuttavia, un **attaccante** potrebbe utilizzare un token per accedere a GCP **via cli che non sarà protetto da MFA** (sarà protetto da MFA solo quando l'utente accede per generarlo: `gcloud auth login`).
|
||||
|
||||
## Groups
|
||||
## Gruppi
|
||||
|
||||
When an organisation is created several groups are **strongly suggested to be created.** If you manage any of them you might have compromised all or an important part of the organization:
|
||||
Quando viene creata un'organizzazione, è **fortemente consigliato creare diversi gruppi.** Se gestisci uno di essi, potresti aver compromesso tutto o una parte importante dell'organizzazione:
|
||||
|
||||
<table data-header-hidden><thead><tr><th width="299.3076923076923"></th><th></th></tr></thead><tbody><tr><td><strong>Group</strong></td><td><strong>Function</strong></td></tr><tr><td><strong><code>gcp-organization-admins</code></strong><br><em>(group or individual accounts required for checklist)</em></td><td>Administering any resource that belongs to the organization. Assign this role sparingly; org admins have access to all of your Google Cloud resources. Alternatively, because this function is highly privileged, consider using individual accounts instead of creating a group.</td></tr><tr><td><strong><code>gcp-network-admins</code></strong><br><em>(required for checklist)</em></td><td>Creating networks, subnets, firewall rules, and network devices such as Cloud Router, Cloud VPN, and cloud load balancers.</td></tr><tr><td><strong><code>gcp-billing-admins</code></strong><br><em>(required for checklist)</em></td><td>Setting up billing accounts and monitoring their usage.</td></tr><tr><td><strong><code>gcp-developers</code></strong><br><em>(required for checklist)</em></td><td>Designing, coding, and testing applications.</td></tr><tr><td><strong><code>gcp-security-admins</code></strong><br></td><td>Establishing and managing security policies for the entire organization, including access management and <a href="https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints">organization constraint policies</a>. See the <a href="https://cloud.google.com/architecture/security-foundations/authentication-authorization#users_and_groups">Google Cloud security foundations guide</a> for more information about planning your Google Cloud security infrastructure.</td></tr><tr><td><strong><code>gcp-devops</code></strong></td><td>Creating or managing end-to-end pipelines that support continuous integration and delivery, monitoring, and system provisioning.</td></tr><tr><td><strong><code>gcp-logging-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-logging-viewers</code></strong></td><td></td></tr><tr><td><strong><code>gcp-monitor-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-billing-viewer</code></strong><br><em>(no longer by default)</em></td><td>Monitoring the spend on projects. Typical members are part of the finance team.</td></tr><tr><td><strong><code>gcp-platform-viewer</code></strong><br><em>(no longer by default)</em></td><td>Reviewing resource information across the Google Cloud organization.</td></tr><tr><td><strong><code>gcp-security-reviewer</code></strong><br><em>(no longer by default)</em></td><td>Reviewing cloud security.</td></tr><tr><td><strong><code>gcp-network-viewer</code></strong><br><em>(no longer by default)</em></td><td>Reviewing network configurations.</td></tr><tr><td><strong><code>grp-gcp-audit-viewer</code></strong><br><em>(no longer by default)</em></td><td>Viewing audit logs.</td></tr><tr><td><strong><code>gcp-scc-admin</code></strong><br><em>(no longer by default)</em></td><td>Administering Security Command Center.</td></tr><tr><td><strong><code>gcp-secrets-admin</code></strong><br><em>(no longer by default)</em></td><td>Managing secrets in Secret Manager.</td></tr></tbody></table>
|
||||
<table data-header-hidden><thead><tr><th width="299.3076923076923"></th><th></th></tr></thead><tbody><tr><td><strong>Gruppo</strong></td><td><strong>Funzione</strong></td></tr><tr><td><strong><code>gcp-organization-admins</code></strong><br><em>(gruppo o account individuali richiesti per la checklist)</em></td><td>Amministrare qualsiasi risorsa che appartiene all'organizzazione. Assegna questo ruolo con parsimonia; gli amministratori dell'organizzazione hanno accesso a tutte le tue risorse Google Cloud. In alternativa, poiché questa funzione è altamente privilegiata, considera di utilizzare account individuali invece di creare un gruppo.</td></tr><tr><td><strong><code>gcp-network-admins</code></strong><br><em>(richiesto per la checklist)</em></td><td>Creare reti, subnet, regole firewall e dispositivi di rete come Cloud Router, Cloud VPN e bilanciatori di carico cloud.</td></tr><tr><td><strong><code>gcp-billing-admins</code></strong><br><em>(richiesto per la checklist)</em></td><td>Impostare conti di fatturazione e monitorare il loro utilizzo.</td></tr><tr><td><strong><code>gcp-developers</code></strong><br><em>(richiesto per la checklist)</em></td><td>Progettare, codificare e testare applicazioni.</td></tr><tr><td><strong><code>gcp-security-admins</code></strong><br></td><td>Stabilire e gestire politiche di sicurezza per l'intera organizzazione, inclusa la gestione degli accessi e <a href="https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints">politiche di vincolo dell'organizzazione</a>. Consulta la <a href="https://cloud.google.com/architecture/security-foundations/authentication-authorization#users_and_groups">guida alle fondamenta di sicurezza di Google Cloud</a> per ulteriori informazioni sulla pianificazione della tua infrastruttura di sicurezza Google Cloud.</td></tr><tr><td><strong><code>gcp-devops</code></strong></td><td>Creare o gestire pipeline end-to-end che supportano integrazione e distribuzione continue, monitoraggio e provisioning di sistemi.</td></tr><tr><td><strong><code>gcp-logging-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-logging-viewers</code></strong></td><td></td></tr><tr><td><strong><code>gcp-monitor-admins</code></strong></td><td></td></tr><tr><td><strong><code>gcp-billing-viewer</code></strong><br><em>(non più per impostazione predefinita)</em></td><td>Monitorare la spesa sui progetti. I membri tipici fanno parte del team finanziario.</td></tr><tr><td><strong><code>gcp-platform-viewer</code></strong><br><em>(non più per impostazione predefinita)</em></td><td>Esaminare le informazioni sulle risorse all'interno dell'organizzazione Google Cloud.</td></tr><tr><td><strong><code>gcp-security-reviewer</code></strong><br><em>(non più per impostazione predefinita)</em></td><td>Esaminare la sicurezza del cloud.</td></tr><tr><td><strong><code>gcp-network-viewer</code></strong><br><em>(non più per impostazione predefinita)</em></td><td>Esaminare le configurazioni di rete.</td></tr><tr><td><strong><code>grp-gcp-audit-viewer</code></strong><br><em>(non più per impostazione predefinita)</em></td><td>Visualizzare i log di audit.</td></tr><tr><td><strong><code>gcp-scc-admin</code></strong><br><em>(non più per impostazione predefinita)</em></td><td>Amministrare il Security Command Center.</td></tr><tr><td><strong><code>gcp-secrets-admin</code></strong><br><em>(non più per impostazione predefinita)</em></td><td>Gestire i segreti in Secret Manager.</td></tr></tbody></table>
|
||||
|
||||
## **Default Password Policy**
|
||||
## **Politica di Password Predefinita**
|
||||
|
||||
- Enforce strong passwords
|
||||
- Between 8 and 100 characters
|
||||
- No reuse
|
||||
- No expiration
|
||||
- If people is accessing Workspace through a third party provider, these requirements aren't applied.
|
||||
- Applicare password forti
|
||||
- Tra 8 e 100 caratteri
|
||||
- Nessun riutilizzo
|
||||
- Nessuna scadenza
|
||||
- Se le persone accedono a Workspace tramite un provider di terze parti, questi requisiti non vengono applicati.
|
||||
|
||||
<figure><img src="../../../images/image (20).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../images/image (22).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## **Service accounts**
|
||||
## **Account di servizio**
|
||||
|
||||
These are the principals that **resources** can **have** **attached** and access to interact easily with GCP. For example, it's possible to access the **auth token** of a Service Account **attached to a VM** in the metadata.\
|
||||
It is possible to encounter some **conflicts** when using both **IAM and access scopes**. For example, your service account may have the IAM role of `compute.instanceAdmin` but the instance you've breached has been crippled with the scope limitation of `https://www.googleapis.com/auth/compute.readonly`. This would prevent you from making any changes using the OAuth token that's automatically assigned to your instance.
|
||||
Questi sono i principi che **le risorse** possono **avere** **allegate** e accesso per interagire facilmente con GCP. Ad esempio, è possibile accedere al **token di autenticazione** di un Account di Servizio **allegato a una VM** nei metadati.\
|
||||
È possibile incontrare alcuni **conflitti** quando si utilizzano sia **IAM che ambiti di accesso**. Ad esempio, il tuo account di servizio potrebbe avere il ruolo IAM di `compute.instanceAdmin`, ma l'istanza che hai compromesso è stata limitata con la limitazione dell'ambito di `https://www.googleapis.com/auth/compute.readonly`. Questo ti impedirebbe di apportare modifiche utilizzando il token OAuth che è automaticamente assegnato alla tua istanza.
|
||||
|
||||
It's similar to **IAM roles from AWS**. But not like in AWS, **any** service account can be **attached to any service** (it doesn't need to allow it via a policy).
|
||||
|
||||
Several of the service accounts that you will find are actually **automatically generated by GCP** when you start using a service, like:
|
||||
È simile ai **ruoli IAM di AWS**. Ma a differenza di AWS, **qualsiasi** account di servizio può essere **allegato a qualsiasi servizio** (non è necessario consentirlo tramite una politica).
|
||||
|
||||
Diversi degli account di servizio che troverai sono in realtà **generati automaticamente da GCP** quando inizi a utilizzare un servizio, come:
|
||||
```
|
||||
PROJECT_NUMBER-compute@developer.gserviceaccount.com
|
||||
PROJECT_ID@appspot.gserviceaccount.com
|
||||
```
|
||||
|
||||
However, it's also possible to create and attach to resources **custom service accounts**, which will look like this:
|
||||
|
||||
Tuttavia, è anche possibile creare e allegare a risorse **account di servizio personalizzati**, che appariranno così:
|
||||
```
|
||||
SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com
|
||||
```
|
||||
### **Chiavi e Token**
|
||||
|
||||
### **Keys & Tokens**
|
||||
Ci sono 2 modi principali per accedere a GCP come account di servizio:
|
||||
|
||||
There are 2 main ways to access GCP as a service account:
|
||||
- **Via token OAuth**: Questi sono token che otterrai da luoghi come gli endpoint dei metadati o rubando richieste http e sono limitati dagli **ambiti di accesso**.
|
||||
- **Chiavi**: Queste sono coppie di chiavi pubbliche e private che ti permetteranno di firmare richieste come account di servizio e persino generare token OAuth per eseguire azioni come account di servizio. Queste chiavi sono pericolose perché sono più complicate da limitare e controllare, ecco perché GCP raccomanda di non generarle.
|
||||
- Nota che ogni volta che viene creato un SA, **GCP genera una chiave per l'account di servizio** a cui l'utente non può accedere (e non sarà elencata nell'applicazione web). Secondo [**questo thread**](https://www.reddit.com/r/googlecloud/comments/f0ospy/service_account_keys_observations/), questa chiave è **utilizzata internamente da GCP** per dare accesso agli endpoint dei metadati per generare i token OAuth accessibili.
|
||||
|
||||
- **Via OAuth tokens**: These are tokens that you will get from places like metadata endpoints or stealing http requests and they are limited by the **access scopes**.
|
||||
- **Keys**: These are public and private key pairs that will allow you to sign requests as the service account and even generate OAuth tokens to perform actions as the service account. These keys are dangerous because they are more complicated to limit and control, that's why GCP recommend to not generate them.
|
||||
- Note that every-time a SA is created, **GCP generates a key for the service account** that the user cannot access (and won't be listed in the web application). According to [**this thread**](https://www.reddit.com/r/googlecloud/comments/f0ospy/service_account_keys_observations/) this key is **used internally by GCP** to give metadata endpoints access to generate the accesible OAuth tokens.
|
||||
### **Ambiti di accesso**
|
||||
|
||||
### **Access scopes**
|
||||
Gli ambiti di accesso sono **allegati ai token OAuth generati** per accedere agli endpoint API di GCP. Essi **limitano i permessi** del token OAuth.\
|
||||
Questo significa che se un token appartiene a un Proprietario di una risorsa ma non ha nell'ambito del token l'accesso a quella risorsa, il token **non può essere utilizzato per (ab)usare quei privilegi**.
|
||||
|
||||
Access scope are **attached to generated OAuth tokens** to access the GCP API endpoints. They **restrict the permissions** of the OAuth token.\
|
||||
This means that if a token belongs to an Owner of a resource but doesn't have the in the token scope to access that resource, the token **cannot be used to (ab)use those privileges**.
|
||||
|
||||
Google actually [recommends](https://cloud.google.com/compute/docs/access/service-accounts#service_account_permissions) that **access scopes are not used and to rely totally on IAM**. The web management portal actually enforces this, but access scopes can still be applied to instances using custom service accounts programmatically.
|
||||
|
||||
You can see what **scopes** are **assigned** by **querying:**
|
||||
Google in realtà [raccomanda](https://cloud.google.com/compute/docs/access/service-accounts#service_account_permissions) che **gli ambiti di accesso non vengano utilizzati e di fare totalmente affidamento su IAM**. Il portale di gestione web in realtà applica questa regola, ma gli ambiti di accesso possono ancora essere applicati alle istanze utilizzando account di servizio personalizzati programmaticamente.
|
||||
|
||||
Puoi vedere quali **ambiti** sono **assegnati** eseguendo una **query:**
|
||||
```bash
|
||||
curl 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=<access_token>'
|
||||
|
||||
{
|
||||
"issued_to": "223044615559.apps.googleusercontent.com",
|
||||
"audience": "223044615559.apps.googleusercontent.com",
|
||||
"user_id": "139746512919298469201",
|
||||
"scope": "openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/sqlservice.login https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/accounts.reauth",
|
||||
"expires_in": 2253,
|
||||
"email": "username@testing.com",
|
||||
"verified_email": true,
|
||||
"access_type": "offline"
|
||||
"issued_to": "223044615559.apps.googleusercontent.com",
|
||||
"audience": "223044615559.apps.googleusercontent.com",
|
||||
"user_id": "139746512919298469201",
|
||||
"scope": "openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/sqlservice.login https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/accounts.reauth",
|
||||
"expires_in": 2253,
|
||||
"email": "username@testing.com",
|
||||
"verified_email": true,
|
||||
"access_type": "offline"
|
||||
}
|
||||
```
|
||||
I precedenti **scopes** sono quelli generati per **default** utilizzando **`gcloud`** per accedere ai dati. Questo perché quando usi **`gcloud`** prima crei un token OAuth e poi lo usi per contattare gli endpoint.
|
||||
|
||||
The previous **scopes** are the ones generated by **default** using **`gcloud`** to access data. This is because when you use **`gcloud`** you first create an OAuth token, and then use it to contact the endpoints.
|
||||
Lo scope più importante di quelli potenzialmente è **`cloud-platform`**, che fondamentalmente significa che è possibile **accedere a qualsiasi servizio in GCP**.
|
||||
|
||||
The most important scope of those potentially is **`cloud-platform`**, which basically means that it's possible to **access any service in GCP**.
|
||||
|
||||
You can **find a list of** [**all the possible scopes in here**](https://developers.google.com/identity/protocols/googlescopes)**.**
|
||||
|
||||
If you have **`gcloud`** browser credentials, it's possible to **obtain a token with other scopes,** doing something like:
|
||||
Puoi **trovare un elenco di** [**tutti i possibili scopes qui**](https://developers.google.com/identity/protocols/googlescopes)**.**
|
||||
|
||||
Se hai le credenziali del browser **`gcloud`**, è possibile **ottenere un token con altri scopes,** facendo qualcosa come:
|
||||
```bash
|
||||
# Maybe you can get a user token with other scopes changing the scopes array from ~/.config/gcloud/credentials.db
|
||||
|
||||
@@ -213,14 +204,13 @@ gcloud auth application-default print-access-token
|
||||
|
||||
# To use this token with some API you might need to use curl to indicate the project header with --header "X-Goog-User-Project: <project-name>"
|
||||
```
|
||||
|
||||
## **Terraform IAM Policies, Bindings and Memberships**
|
||||
|
||||
As defined by terraform in [https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam) using terraform with GCP there are different ways to grant a principal access over a resource:
|
||||
Come definito da terraform in [https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam), utilizzando terraform con GCP ci sono diversi modi per concedere a un principale accesso a una risorsa:
|
||||
|
||||
- **Memberships**: You set **principals as members of roles** **without restrictions** over the role or the principals. You can put a user as a member of a role and then put a group as a member of the same role and also set those principals (user and group) as member of other roles.
|
||||
- **Bindings**: Several **principals can be binded to a role**. Those **principals can still be binded or be members of other roles**. However, if a principal which isn’t binded to the role is set as **member of a binded role**, the next time the **binding is applied, the membership will disappear**.
|
||||
- **Policies**: A policy is **authoritative**, it indicates roles and principals and then, **those principals cannot have more roles and those roles cannot have more principals** unless that policy is modified (not even in other policies, bindings or memberships). Therefore, when a role or principal is specified in policy all its privileges are **limited by that policy**. Obviously, this can be bypassed in case the principal is given the option to modify the policy or privilege escalation permissions (like create a new principal and bind him a new role).
|
||||
- **Memberships**: Imposti **i principali come membri di ruoli** **senza restrizioni** sul ruolo o sui principali. Puoi mettere un utente come membro di un ruolo e poi mettere un gruppo come membro dello stesso ruolo e anche impostare quei principali (utente e gruppo) come membri di altri ruoli.
|
||||
- **Bindings**: Diversi **principali possono essere legati a un ruolo**. Quei **principali possono ancora essere legati o essere membri di altri ruoli**. Tuttavia, se un principale che non è legato al ruolo è impostato come **membro di un ruolo legato**, la prossima volta che il **binding viene applicato, la membership scomparirà**.
|
||||
- **Policies**: Una policy è **autoritativa**, indica ruoli e principali e poi, **quei principali non possono avere più ruoli e quei ruoli non possono avere più principali** a meno che quella policy non venga modificata (neanche in altre policy, binding o memberships). Pertanto, quando un ruolo o un principale è specificato nella policy, tutti i suoi privilegi sono **limitati da quella policy**. Ovviamente, questo può essere eluso nel caso in cui al principale venga data l'opzione di modificare la policy o i permessi di escalation dei privilegi (come creare un nuovo principale e legarlo a un nuovo ruolo).
|
||||
|
||||
## References
|
||||
|
||||
@@ -228,7 +218,3 @@ As defined by terraform in [https://registry.terraform.io/providers/hashicorp/go
|
||||
- [https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user