Protezione di Resource Manager

Questo argomento fornisce informazioni e suggerimenti sulla sicurezza per Resource Manager.

Resource Manager consente di automatizzare il provisioning delle risorse Oracle Cloud Infrastructure eseguendo il commit delle istruzioni sui file di configurazione. In questo modo, ti assicuri che le risorse di cui è stato eseguito il provisioning seguano le linee guida sulla sicurezza della tua organizzazione. Questi file di configurazione acquisiscono le istruzioni di provisioning passo-passo utilizzando un linguaggio dichiarativo che segue il modello "infrastructure-as-code". Le istruzioni di provisioning vengono eseguite come job.

Responsabilità di sicurezza

Per utilizzare Resource Manager in modo sicuro, scopri le tue responsabilità in termini di sicurezza e conformità.

In generale, Oracle fornisce la sicurezza dell'infrastruttura e delle operazioni cloud, come i controlli di accesso degli operatori cloud e l'applicazione di patch di sicurezza dell'infrastruttura. Sei responsabile della configurazione sicura delle tue risorse cloud. La sicurezza nel cloud è una responsabilità condivisa tra te e Oracle.

Oracle è responsabile dei seguenti requisiti di sicurezza:

  • Sicurezza fisica: Oracle è responsabile della protezione dell'infrastruttura globale che esegue tutti i servizi offerti in Oracle Cloud Infrastructure. Questa infrastruttura è costituita da hardware, software, networking e strutture che eseguono i servizi Oracle Cloud Infrastructure.

In questa pagina sono descritte le responsabilità di sicurezza dell'utente, che includono le aree riportate di seguito.

  • Controllo dell'accesso: limitare il più possibile i privilegi. Agli utenti dovrebbe essere concesso solo l'accesso necessario per svolgere il proprio lavoro.
  • Riservatezza: limitare l'uso dei dati riservati nei file di configurazione e di output

Task di sicurezza iniziali

Utilizzare questa lista di controllo per identificare i task eseguiti per proteggere Resource Manager in una nuova tenancy di Oracle Cloud Infrastructure.

Attività Ulteriori informazioni
Utilizzare i criteri IAM per concedere l'accesso a utenti e risorse Criteri IAM

Task di sicurezza di routine

Dopo aver iniziato a utilizzare Resource Manager, utilizzare questa lista di controllo per identificare i task di sicurezza che si consiglia di eseguire regolarmente.

Attività Ulteriori informazioni
Limitare l'uso di informazioni riservate nei file di configurazione e di output Privacy
Eseguire un controllo della sicurezza Audit

Criteri IAM

Utilizzare i criteri per limitare l'accesso a Resource Manager.

Importanti

Le policy per la gestione delle risorse Oracle Cloud Infrastructure sono necessarie anche per le operazioni di Resource Manager che accedono alle risorse. Ad esempio, l'esecuzione di un job di applicazione in uno stack che include istanze di computazione e subnet richiede criteri che concedono le autorizzazioni per tali tipi di risorsa nei compartimenti in cui si desidera eseguire il provisioning delle risorse. Per visualizzare esempi di criteri per la gestione delle risorse di Oracle Cloud Infrastructure, vedere Policy comuni.

Una policy specifica chi può accedere alle risorse di Oracle Cloud Infrastructure e come. Per ulteriori informazioni, vedere Funzionamento dei criteri.

Assegnare a un gruppo i privilegi minimi necessari per eseguire le proprie responsabilità. Ogni criterio ha un verbo che descrive le azioni che il gruppo può eseguire. Dal minor numero di accessi al massimo, i verbi disponibili sono: inspect, read, use e manage.

Per ulteriori informazioni sui criteri di Resource Manager, vedere Dettagli per Resource Manager.

Gestisci stack e job

Creare questo criterio per consentire a un gruppo di gestire gli stack e i job nella tenancy, nonché gestire le risorse Oracle Cloud Infrastructure negli stack della tenancy.

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

Creare questo criterio per impedire esplicitamente a un gruppo di eseguire job di eliminazione.

Nota

In questa istruzione dei criteri, è necessario includere la nuova autorizzazione per read orm-jobs poiché la terza istruzione include una condizione che utilizza variabili non rilevanti per l'elenco o il recupero dei job.
Allow group <group_name> to use orm-stacks in tenancy
Allow group <group_name> to read orm-jobs in tenancy
Allow group <group_name> to manage orm-jobs in tenancy where any {target.job.operation = 'PLAN', target.job.operation = 'APPLY'}

Per ulteriori dettagli sulle autorizzazioni dello stack, vedere orm-stacks. Per ulteriori dettagli sulle autorizzazioni dei job, vedere job-orm.

Gestisci provider di origine configurazione

Creare questo criterio per concedere a un gruppo l'autorizzazione per creare, aggiornare, spostare ed eliminare i provider di origine configurazione nella tenancy.

Allow group <group_name> to manage orm-config-source-providers in tenancy

Creare questo criterio per concedere a un gruppo l'autorizzazione per creare stack dai file di configurazione nei sistemi di controllo del codice sorgente (mediante i provider di origine della configurazione) esistenti, oltre alla gestione di stack e job.

Allow group <group_name> to read orm-config-source-providers in tenancy
Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy

Per ulteriori dettagli sulle autorizzazioni del provider di origine configurazione, vedere orm-config-source-providers.

Gestisci modelli privati

Creare questo criterio per concedere a un gruppo l'autorizzazione a creare, aggiornare, spostare ed eliminare i modelli privati nella tenancy.

Allow group <group_name> to manage orm-template in tenancy

Creare questo criterio per concedere a un gruppo l'autorizzazione per creare stack da modelli privati, oltre a gestire stack e job.

Allow group <group_name> to manage orm-stacks in tenancy
Allow group <group_name> to manage orm-jobs in tenancy
Allow group <group_name> to read orm-templates in tenancy

Per ulteriori dettagli sulle autorizzazioni dei modelli privati, vedere modelli temporali.

Gestisci endpoint privati

Creare questo criterio per concedere a un gruppo l'autorizzazione a creare, aggiornare, spostare ed eliminare gli endpoint privati nella tenancy, inclusa la possibilità di selezionare VCN e subnet quando si creano endpoint privati.

Allow group <group_name> to manage orm-private-endpoints in tenancy
  where any request.operation={'CreatePrivateEndpoint'}"
Allow group <group_name> to use virtual-network-family in tenancy

Per ulteriori dettagli sulle autorizzazioni degli endpoint privati, vedere orm-private-endpoints.

Privacy

Gestisce e controlla l'accesso alle informazioni riservate in Resource Manager.

File di stato Terraform

Lo stato Terraform (.tfstate) può contenere dati riservati, inclusi ID risorsa, password e chiavi SSH. Utilizzare il servizio Vault per gestire e ruotare le credenziali segrete utilizzate con Resource Manager.

Un vault include le chiavi di cifratura e i segreti utilizzati per proteggere i dati e connettersi a risorse protette. I segreti vengono cifrati utilizzando le chiavi di cifratura master e memorizzano credenziali quali password, certificati, chiavi SSH o token di autenticazione. Prima di creare e utilizzare i segreti, è necessario creare un vault e una chiave di cifratura principale, se non esistono.

Ad esempio, è necessaria una chiave SSH per eseguire comandi e script remoti su un'istanza di computazione. Vedere Utilizzo dell'esecuzione remota.

A ogni segreto viene assegnata automaticamente una versione segreta. Quando si ruota un segreto, si genera una nuova versione del segreto fornendo nuovi contenuti segreti al servizio Vault. La rotazione periodica dei contenuti segreti riduce l'impatto in caso di esposizione di un segreto.

Per controllare l'accesso al file di stato Terraform, è possibile creare un criterio di sicurezza che limiti l'accesso ai job di lettura, ad esempio:

Allow group <group_name> to read orm-jobs in compartment

Qualsiasi utente che disponga dell'autorizzazione ORM_JOB_READ può accedere ai file di stato Terraform.

Nota

Poiché l'autorizzazione read orm-jobs ha effetto anche su altre operazioni, ad esempio il recupero dei log e delle configurazioni Terraform, si consiglia di separare i file di stato in un compartimento in cui un criterio restrittivo non limita la possibilità di eseguire altre operazioni.

Configurazioni Terraform

Il workflow di Resource Manager in genere include la scrittura o la generazione di una configurazione Terraform che viene quindi utilizzata per gestire lo stack. Poiché è possibile accedere alla configurazione Terraform utilizzando l'API di Resource Manager GetJobTfConfig, si consiglia di non includere informazioni riservate nei file di configurazione.

Qualsiasi utente che dispone dell'autorizzazione ORM_JOB_READ può accedere alle configurazioni Terraform.

Sicurezza della rete

Proteggi l'accesso di rete alle tue risorse nel servizio Resource Manager, inclusi i server Git privati e le risorse cloud a cui accedi da Resource Manager.

Anziché esporre le risorse private e il traffico di rete corrispondente al pubblico, utilizzare gli endpoint privati per l'accesso remoto a queste risorse.

Utilizzare elenchi di sicurezza , gruppi di sicurezza di rete o una combinazione di entrambi per controllare il traffico a livello di pacchetto all'interno e all'esterno delle risorse nella VCN (rete cloud virtuale) . Vedere Accesso e sicurezza.

Quando si imposta un gruppo di sicurezza di rete (NSG) da utilizzare con un endpoint privato, includere le regole riportate di seguito.

  • Regola di uscita che consente il traffico verso la risorsa non pubblica.

    Esempi per un'istanza di computazione non pubblica all'indirizzo IP 192.168.227.87:

    • Accesso minimo: 192.168.227.87/32
    • Accesso generale al CIDR VCN e alla subnet: 192.168.0.0/16
  • Regola di entrata che consente il traffico dall'endpoint privato.

    Esempi per un'istanza di computazione non pubblica all'indirizzo IP 192.168.227.87:

    • Accesso minimo: 192.168.198.204/32 (Tipo di fonte: CIDR)
    • Accesso generale dal CIDR della subnet: 192.168.0.0/16

Quando crei una subnet in una VCN, per impostazione predefinita la subnet viene considerata pubblica e la comunicazione Internet è consentita. Utilizzare le reti secondarie private per ospitare risorse che non richiedono l'accesso a Internet. Puoi anche configurare un gateway di servizi nella tua VCN per consentire alle risorse su una subnet privata di accedere ad altri servizi cloud. Vedere Scelte di connettività.

È possibile utilizzare Zero Trust Packet Routing (ZPR) insieme ai gruppi di sicurezza di rete o al posto di essi per gestire l'accesso di rete alle risorse OCI. A tale scopo, definire i criteri ZPR che regolano la modalità di comunicazione tra le risorse e aggiungere quindi attributi di sicurezza a tali risorse. Per ulteriori informazioni, vedere Instradamento dei pacchetti Zero Trust.

Attenzione

Se un endpoint dispone di un attributo di sicurezza ZPR (Zero Trust Packet Routing), il traffico verso l'endpoint deve soddisfare i criteri ZPR e tutte le regole NSG e della lista di sicurezza. Ad esempio, se si stanno già utilizzando gruppi di sicurezza di rete e si aggiunge un attributo di sicurezza a un endpoint, tutto il traffico verso l'endpoint viene bloccato. Da quel momento in poi, un criterio ZPR deve consentire esplicitamente il traffico verso l'endpoint.

Audit

Individuare i log degli accessi e altri dati di sicurezza per Resource Manager.

Il servizio di audit registra automaticamente tutte le chiamate API alle risorse Oracle Cloud Infrastructure. È possibile raggiungere gli obiettivi di sicurezza e conformità utilizzando il servizio di audit per monitorare tutte le attività utente all'interno della tenancy. Poiché tutte le chiamate alla console, all'SDK e alla riga di comando (CLI) passano attraverso le nostre API, viene inclusa tutta l'attività da tali origini. I record di audit sono disponibili tramite un'interfaccia API di query autenticata e filtrabile oppure possono essere recuperati come file in batch dallo storage degli oggetti. I contenuti del log di audit includono l'attività che si è verificata, l'utente che l'ha avviata, la data e l'ora della richiesta, nonché l'IP di origine, l'user agent e le intestazioni HTTP della richiesta. Vedere Visualizzazione degli eventi del log di audit.

Esempio di log di controllo

Un log di audit per un evento CreateJob

{
  "datetime": 1639092316856,
  "logContent": {
    "data": {
      "additionalDetails": {
        "X-Real-Port": 31720
      },
      "availabilityDomain": "AD1",
      "compartmentId": "ocid1.tenancy.oc1..<unique_id>",
      "compartmentName": "mytenancy",
      "definedTags": null,
      "eventGroupingId": "<unique_id>",
      "eventName": "CreateJob",
      "freeformTags": null,
      "identity": {
        "authType": "natv",
        "callerId": null,
        "callerName": null,
        "consoleSessionId": "<unique_id>",
        "credentials": "<key>",
        "ipAddress": "<ip_address>",
        "principalId": "ocid1.user.oc1..<unique_id>",
        "principalName": "<user_name>",
        "tenantId": "ocid1.tenancy.oc1..<unique_id>",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
      },
      "message": "apply-job-20211209152516 CreateJob succeeded",
      "request": {
        "action": "POST",
        "headers": {
          "Accept": [
            "*/*"
          ],
          "Accept-Encoding": [
            "gzip, deflate, br"
          ],
          "Accept-Language": [
            "en"
          ],
          "Authorization": [
            "Signature keyId=\"<key>",version=\"1\",algorithm=\"rsa-sha256\",headers=\"(request-target) host content-length accept-language content-type opc-request-id x-content-sha256 x-date\",signature=\"*****\""
          ],
          "Connection": [
            "keep-alive"
          ],
          "Content-Length": [
            "207"
          ],
          "Content-Type": [
            "application/json"
          ],
          "Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Referer": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com/"
          ],
          "Sec-Fetch-Dest": [
            "empty"
          ],
          "Sec-Fetch-Mode": [
            "cors"
          ],
          "Sec-Fetch-Site": [
            "same-site"
          ],
          "User-Agent": [
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
          ],
          "opc-request-id": [
            "<unique_id>"
          ],
          "x-content-sha256": [
            "<key>"
          ],
          "x-date": [
            "Thu, 09 Dec 2021 23:25:16 GMT"
          ]
        },
        "id": "<unique_id>,
        "parameters": {},
        "path": "/20180917/jobs"
      },
      "resourceId": "ocid1.ormjob.oc1.phx.<unique_id>",
      "response": {
        "headers": {
          "Access-Control-Allow-Credentials": [
            "true"
          ],
          "Access-Control-Allow-Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Access-Control-Expose-Headers": [
            "opc-previous-page,opc-next-page,opc-client-info,ETag,opc-total-items,opc-request-id,Location"
          ],
          "Cache-Control": [
            "no-cache, no-store, must-revalidate"
          ],
          "Content-Length": [
            "1135"
          ],
          "Content-Type": [
            "application/json"
          ],
          "Date": [
            "Thu, 09 Dec 2021 23:25:16 GMT"
          ],
          "ETag": [
            "<unique_id>"
          ],
          "Pragma": [
            "no-cache"
          ],
          "Strict-Transport-Security": [
            "max-age=31536000; includeSubDomains;"
          ],
          "Timing-Allow-Origin": [
            "https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com"
          ],
          "Vary": [
            "Origin"
          ],
          "X-Content-Type-Options": [
            "nosniff"
          ],
          "X-XSS-Protection": [
            "1; mode=block"
          ],
          "opc-request-id": [
            "<unique_id>"
          ]
        },
        "message": null,
        "payload": {
          "id": "ocid1.ormjob.oc1.phx.<unique_id>",
          "resourceName": "apply-job-<unique_id>"
        },
        "responseTime": "2021-12-09T23:25:16.856Z",
        "status": "200"
      },
      "stateChange": {
        "current": {
          "applyJobPlanResolution": {
            "isAutoApproved": true
          },
          "cancellationDetails": {
            "isForced": false
          },
          "compartmentId": "ocid1.tenancy.oc1..<unique_id>",
          "configSource": {
            "configSourceRecordType": "ZIP_UPLOAD"
          },
          "definedTags": {},
          "displayName": "apply-job-<unique_id>",
          "freeformTags": {},
          "id": "ocid1.ormjob.oc1.phx.<unique_id>",
          "jobOperationDetails": {
            "executionPlanStrategy": "AUTO_APPROVED",
            "operation": "APPLY"
          },
          "lifecycleState": "ACCEPTED",
          "operation": "APPLY",
          "stackId": "ocid1.ormstack.oc1.phx.<unique_id>",
          "timeCreated": "2021-12-09T23:25:16.707Z",
          "variables": {
            "compartment_ocid": "ocid1.tenancy.oc1..<unique_id>",
            "region": "us-phoenix-1",
            "tenancy_ocid": "ocid1.tenancy.oc1..<unique_id>",
            "wp_admin_password": "<example-password>",
            "wp_admin_user": "<user_name>"
          }
        },
        "previous": {}
      }
    },
    "dataschema": "2.0",
    "id": "<unique_id>",
    "oracle": {
      "compartmentid": "ocid1.tenancy.oc1..<unique_id>",
      "ingestedtime": "2021-12-09T23:25:19.071Z",
      "loggroupid": "_Audit",
      "tenantid": "ocid1.tenancy.oc1..<unique_id>"
    },
    "source": "apply-job-<unique_id>",
    "specversion": "1.0",
    "time": "2021-12-09T23:25:16.856Z",
    "type": "com.oraclecloud.OracleResourceManager.CreateJob.begin"
  }
}