Protección de Resource Manager

En este tema, se proporciona información de seguridad y recomendaciones para el gestor de recursos.

Resource Manager permite automatizar el aprovisionamiento de recursos de Oracle Cloud Infrastructure mediante la confirmación de las instrucciones en archivos de configuración. Al hacerlo, se asegura de que los recursos aprovisionados sigan las directrices de seguridad de su organización. Estos archivos de configuración capturan las instrucciones de aprovisionamiento paso a paso mediante un lenguaje declarativo que sigue al modelo "infrastructure-as-code". Las instrucciones de aprovisionamiento se ejecutan como trabajos.

Responsabilidades de seguridad

Para utilizar Resource Manager de forma segura, obtenga información sobre sus responsabilidades de seguridad y conformidad.

En general, Oracle proporciona seguridad de la infraestructura y las operaciones en la nube, como los controles de acceso de los operadores de la nube y la aplicación de parches de seguridad de la infraestructura. Es responsable de configurar de forma segura sus recursos en la nube. La seguridad en la nube es una responsabilidad compartida entre usted y Oracle.

Oracle es responsable de los siguientes requisitos de seguridad:

  • Seguridad física: Oracle es responsable de proteger la infraestructura global que ejecuta todos los servicios ofrecidos en Oracle Cloud Infrastructure. Esta infraestructura consta del hardware, el software, la red y las instalaciones que ejecutan servicios de Oracle Cloud Infrastructure.

Las responsabilidades de seguridad se describen en esta página, que incluye las siguientes áreas:

  • Control de acceso: limite los privilegios lo máximo posible. A los usuarios solo se les debe otorgar el acceso necesario para realizar su trabajo.
  • Confidencialidad: limite el uso de datos confidenciales en archivos de configuración y salida.

Tareas de seguridad iniciales

Utilice esta lista de comprobación para identificar las tareas que realiza para proteger el gestor de recursos en un nuevo arrendamiento de Oracle Cloud Infrastructure.

Tarea Más información
Utilizar políticas de IAM para otorgar acceso a usuarios y recursos Políticas de IAM

Tareas de Seguridad Rutina

Después de comenzar a utilizar el gestor de recursos, utilice esta lista de comprobación para identificar las tareas de seguridad que le recomendamos que realice con regularidad.

Tarea Más información
Limitar el uso de información confidencial en archivos de configuración y salida confidencialidad
Realizar una auditoría de seguridad Auditoría

Políticas de IAM

Utilice políticas para limitar el acceso al gestor de recursos.

Importante

También serán necesarias políticas para gestionar recursos de Oracle Cloud Infrastructure para operaciones del gestor de recursos que acceden a los recursos. Por ejemplo, la ejecución de un trabajo de aplicación en una pila que incluya instancias informáticas y subredes requiere políticas que le otorgan permisos para esos tipos de recursos, en los compartimentos en los que desea aprovisionar los recursos. Para consultar ejemplos de políticas de gestión de recursos de Oracle Cloud Infrastructure, consulte Políticas comunes.

Una política especifica quién puede acceder a los recursos de Oracle Cloud Infrastructure y cómo. Para obtener más información, consulte Cómo funcionan las políticas.

Asigne a un grupo los privilegios mínimos necesarios para realizar sus responsabilidades. Cada política tiene un verbo que describe qué acciones puede realizar el grupo. Desde la menor cantidad de acceso hasta el máximo, los verbos disponibles son: inspect, read, use y manage.

Para obtener más información sobre las políticas del gestor de recursos, consulte Detalles del gestor de recursos.

Gestionar pilas y trabajos

Cree esta política para permitir a un grupo gestionar pilas y trabajos en el arrendamiento, así como gestionar los recursos de Oracle Cloud Infrastructure en las pilas del arrendamiento.

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

Cree esta política para evitar explícitamente que un grupo ejecute trabajos de destrucción.

Nota

En esta sentencia de política, debe incluir el nuevo permiso para read orm-jobs porque la tercera sentencia incluye una condición que utiliza variables que no son pertinentes para mostrar u obtener trabajos.
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'}

Para obtener más información sobre los permisos de pila, consulte orm-stacks. Para obtener más información sobre los permisos de trabajo, consulte orm-jobs.

Gestionar proveedores de origen de configuración

Cree esta política para otorgar un permiso de grupo para crear, actualizar, mover y suprimir proveedores de origen de configuración en el arrendamiento.

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

Cree esta política para otorgar un permiso de grupo para crear pilas a partir de archivos de configuración en sistemas de control de código de origen (utilizando proveedores de origen de configuración existentes), además de gestionar pilas y trabajos.

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

Para obtener más información sobre los permisos del proveedor de origen de configuración, consulte orm-config-source-providers.

Gestionar plantillas privadas

Cree esta política para otorgar un permiso de grupo para crear, actualizar, mover y suprimir plantillas privadas en el arrendamiento.

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

Cree esta política para otorgar un permiso de grupo para crear pilas a partir de plantillas privadas, además de gestionar pilas y trabajos.

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

Para obtener más información sobre los permisos de plantilla privada, consulte orm-template.

Gestionar puntos finales privados

Cree esta política para otorgar un permiso de grupo para crear, actualizar, mover y suprimir puntos finales privados en el arrendamiento, incluida la capacidad de seleccionar subredes y subredes al crear puntos finales privados.

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

Para obtener más información sobre los permisos de punto final privado, consulte orm-private-endpoints.

confidencialidad

Gestione y controle el acceso a información confidencial en Gestor de recursos.

Archivos de estado de Terraform

El estado de Terraform (.tfstate) puede contener datos confidenciales, incluidos identificadores de recursos, contraseñas y claves SSH. Utilice el servicio de almacén para gestionar y rotar las credenciales secretas que utilice con el gestor de recursos.

Un almacén incluye las claves de cifrado y los secretos que utiliza para proteger los datos y conectarse a los recursos protegidos. Los secretos se cifran mediante claves de cifrado maestras y almacenan credenciales, como contraseñas, certificados, claves SSH o tokens de autenticación. Antes de crear y utilizar secretos, debe crear un almacén y una clave de cifrado maestra si no existen.

Por ejemplo, necesita una clave SSH para ejecutar comandos remotos y scripts en una instancia informática. Consulte Using Remote Exec.

A cada secreto se le asigna automáticamente una versión. Al rotar un secreto, se genera una nueva versión del secreto al proporcionar nuevo contenido del secreto al servicio Vault. La rotación periódica del contenido del secreto reduce el impacto en caso de que se exponga un secreto.

Para controlar el acceso al archivo de estado de Terraform, puede crear una política de seguridad que limite el acceso a los trabajos de lectura, como la siguiente:

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

Cualquier usuario con el permiso ORM_JOB_READ puede acceder a los archivos de estados de Terraform.

Nota

Dado que el permiso read orm-jobs también afecta a otras operaciones como la obtención de logs y las configuraciones de Terraform, recomendamos separar los archivos de estado en un compartimento en el que una política restrictiva no limite la capacidad de realizar otras operaciones.

Configuraciones de Terraform

El flujo de trabajo del gestor de recursos normalmente incluye la escritura o generación de una configuración de Terraform que luego se utiliza para gestionar la pila. Dado que se puede acceder a la configuración de Terraform mediante la API del gestor de recursos GetJobTfConfig, se recomienda no incluir información confidencial en los archivos de configuración.

Cualquier usuario con el permiso ORM_JOB_READ puede acceder a las configuraciones de Terraform.

Seguridad de la red

Proteja el acceso de red a sus recursos en el servicio del gestor de recursos, incluidos los servidores Git privados y los recursos en la nube a los que accede desde el gestor de recursos.

En lugar de exponer los recursos privados y el tráfico de red correspondiente al público, utilice puntos finales privados para el acceso remoto a estos recursos.

Utilice listas de seguridad, grupos de seguridad de red o una combinación de ambos para controlar el tráfico de nivel de paquete dentro y fuera de los recursos de su VCN (red virtual en la nube) . Consulte Acceso y seguridad.

Al configurar un grupo de seguridad de red (NSG) para su uso con un punto final privado, incluya las siguientes reglas.

  • Regla de salida que permite el tráfico al recurso no público.

    Ejemplos de una instancia informática no pública en la dirección IP 192.168.227.87:

    • Acceso mínimo: 192.168.227.87/32
    • Acceso general a VCN y CIDR de subred: 192.168.0.0/16
  • Regla de entrada que permite el tráfico desde el punto final privado.

    Ejemplos de una instancia informática no pública en la dirección IP 192.168.227.87:

    • Acceso mínimo: 192.168.198.204/32 (Tipo de origen: CIDR)
    • Acceso general desde CIDR de subred: 192.168.0.0/16

Al crear una subred en una VCN, por defecto la subred se considera pública y se permite la comunicación a través de Internet. Utilice subredes privadas para alojar recursos que no requieren acceso a Internet. También puede configurar un gateway de servicios en la VCN para permitir que los recursos de una subred privada accedan a otros servicios en la nube. Consulte Opciones de conectividad.

Auditoría

Localizar logs de acceso y otros datos de seguridad para Resource Manager.

El servicio de auditoría registra automáticamente todas las llamadas de API a los recursos de Oracle Cloud Infrastructure. Puede lograr sus objetivos de seguridad y conformidad mediante el servicio de auditoría para supervisar toda la actividad del usuario en su arrendamiento. Dado que todas las llamadas a la consola, SDK y la línea de comandos (CLI) pasan por nuestras API, se incluye toda la actividad de esos orígenes. Los registros de auditoría están disponibles mediante una API de consulta autenticada y filtrable o se pueden recuperar como archivos por lotes de Object Storage. El contenido del log de auditoría incluye la actividad que se produjo, el usuario que la inició, la fecha y la hora de la solicitud, así como la IP de origen, el agente de usuario y las cabeceras HTTP de la solicitud. Consulte Visualización de eventos del log de auditoría.

Ejemplo de log de auditoría

Un log de auditoría para 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": "<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"
  }
}