Protección de Resource Manager
En este tema se proporciona información y recomendaciones de seguridad para el gestor de recursos.
Resource Manager permite automatizar el aprovisionamiento de recursos de Oracle Cloud Infrastructure mediante la validació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.
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 los 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 control para identificar las tareas que debe realizar para proteger Resource Manager en un nuevo arrendamiento de Oracle Cloud Infrastructure.
Tarea | Más información |
---|---|
Utilice políticas de IAM para otorgar acceso a usuarios y recursos | Políticas de IAM |
Tareas de seguridad rutinarias
Después de empezar a utilizar Resource Manager, utilice esta lista de control 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 |
Realice una auditoría de seguridad | Auditoría |
Políticas de IAM
Utilice políticas para limitar el acceso al gestor de recursos.
También son necesarias políticas para gestionar recursos de Oracle Cloud Infrastructure para operaciones de Resource Manager que acceden a 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 concedan permisos para esos tipos de recursos en los compartimentos en los que desea aprovisionar los recursos. Para ver 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 Funcionamiento de las políticas.
Asigne a un grupo los privilegios mínimos necesarios para cumplir con sus responsabilidades. Cada política tiene un verbo que describe las acciones que puede realizar el grupo. Desde la menor cantidad de acceso a la mayor cantidad de acceso, 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 que un grupo gestione pilas y trabajos en el arrendamiento, así como gestionar recursos de Oracle Cloud Infrastructure en las pilas de 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.
En esta sentencia de política, debe incluir el nuevo permiso para
read orm-jobs
, ya que la tercera sentencia incluye una condición que utiliza variables que no son relevantes 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 orígenes de configuración
Cree esta política para otorgar a un grupo permiso 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 a un grupo permiso para crear pilas a partir de archivos de configuración en sistemas de control de código fuente (mediante 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 a un grupo permiso 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 a un grupo permiso 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 plantillas privadas, consulte orm-templates.
Gestionar puntos finales privados
Cree esta política para otorgar a un grupo permiso para crear, actualizar, mover y suprimir puntos finales privados en el arrendamiento, incluida la capacidad de seleccionar redes virtuales en la nube y subredes al crear puntos finales privados.
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
Para obtener más información sobre los permisos de punto final privado, consulte orm-private-endpoints.
confidencialidad
Gestione y controle el acceso a la información confidencial en Resource Manager.
Archivos de estado de Terraform
El estado de Terraform (.tfstate
) puede contener datos confidenciales, incluidos ID de recursos, contraseñas y claves SSH. Utilice el servicio Vault para gestionar y rotar las credenciales secretas que utilice con Resource Manager.
Un almacén incluye las claves de cifrado y los secretos que se utilizan para proteger los datos y conectarse a 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 y scripts remotos 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 proporcionando 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.
Debido a 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 limita 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 Resource Manager, incluidos los servidores Git privados y los recursos en la nube a los que accede desde Resource Manager.
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 la 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 para 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
- Acceso mínimo:
-
Regla de entrada que permite el tráfico desde el punto final privado.
Ejemplos para 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
- Acceso mínimo:
Al crear una subred de una VCN, la subred se considera pública por defecto y se permite la comunicación por Internet. Utilice subredes privadas para alojar recursos que no requieren acceso a Internet. También puede configurar un gateway de servicio en la VCN para permitir que los recursos de una subred privada accedan a otros servicios en la nube. Consulte Opciones de conectividad.
Auditorías
Localice los logs de acceso y otros datos de seguridad para Resource Manager.
El servicio Audit 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 Audit para supervisar toda la actividad de los usuarios dentro de 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.
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": "<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"
}
}