Nota:

Configurar un modelo de administrador inicial para su arrendamiento de Oracle Cloud

Introducción

La seguridad en la nube requiere un modelo de responsabilidad compartida. Oracle como proveedor de servicios en la nube es propietario de la responsabilidad de proporcionar servicios seguros de infraestructura y plataforma. Y usted, como propietario del arrendamiento, es responsable de gestionar y controlar el acceso a los recursos que cree en el arrendamiento. Al crear por primera vez un arrendamiento de Oracle Cloud Infrastructure (OCI), hay una única cuenta de usuario que es miembro del grupo de administradores de arrendamiento, que otorga acceso completo a todo el arrendamiento y a todos los recursos del mismo.

A medida que empiece a agregar otros administradores, asignar permisos, crear recursos y rellenar datos, es importante pensar en su modelo de seguridad al principio del proceso para que no tenga que averiguar cómo limpiar los problemas por el camino.

El modelo de seguridad descrito en este tutorial representa un diseño general y se debe adaptar para que se ajuste a las políticas de seguridad específicas de su organización y a los enfoques de gestión del arrendamiento. El modelo de política de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) es increíblemente flexible y se puede adaptar o modificar fácilmente para adaptarse a diferentes diseños.

Objetivos

Requisitos

Tarea 1: Configuración de los valores de arrendamiento iniciales

Para simplificar la creación de un modelo base para el acceso al arrendamiento y crear roles de alto nivel para trabajar con recursos de nivel de arrendamiento en OCI, los derechos iniciales se pueden crear mediante scripts con la CLI de OCI y se pueden ejecutar desde Cloud Shell.

A continuación, se proporciona un script de plantilla que crea grupos y sentencias de políticas para el siguiente conjunto básico de capacidades de acceso, así como un nivel de acceso base para todos los administradores de OCI.

La intención de estas políticas es crear un juego inicial de derechos aplicables a la mayoría de los clientes. En las siguientes secciones, se describen más detalles sobre estas capacidades de acceso específicas y posibles políticas adicionales.

Estos grupos se deben utilizar junto con los roles que ya existen en los dominios de identidad de OCI IAM, incluidos los administradores de seguridad que configuran los mecanismos de autenticación para el entorno, así como los administradores de usuarios para gestionar la vinculación y la asignación de usuarios. Puede que los administradores de usuarios no sean necesarios en despliegues para los que los usuarios se gestionen en una solución de gestión de identidad externa.

Si no está familiarizado con la sintaxis de la política de OCI IAM, revise la documentación de OCI IAM para comprender la estructura de las sentencias de política.

Script de acceso de línea base

Nota: Este script solo se aplica a entornos de OCI con dominios de IAM. Puede que algunos arrendamientos más antiguos no tengan dominios de IAM en su entorno. Para confirmar si su entorno tiene dominios de IAM, siga las instrucciones aquí.

#!/bin/bash

#Update the below with details for the environment
tenancy_ocid=ocid1.tenancy.oc1..aaaaaaaa....

#Group names
tenancy_manager_group=TenancyManagers
pol_admin_group=PolicyAdmins
sec_admin_group=SecurityAdmin
sec_analyst_group=SecurityAnalysts

#All_Users_Policy
oci iam policy create -c $tenancy_ocid --name "All_Users_Policy" \
--description "General purpose permissions intended for all users of the tenancy." \
--statements "[\"allow any-user to inspect tag-defaults in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
              \"allow any-user to inspect limits in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
              \"allow any-user to inspect tenancies in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
              \"allow any-user to inspect compartments in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
              \"allow any-user to read policies in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
              \"allow any-user to read objectstorage-namespaces in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
              \"allow any-user to read announcements in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
              \"allow any-user to use cloud-shell in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\"]"

#Tenancy Managers
oci iam group create --name $tenancy_manager_group \
--description "Group for Tenancy Managers for OCI, who can manage tenancy-level constructs, such as budgets and regions."

oci iam policy create -c $tenancy_ocid --name "Tenancy_Managers_Policy" \
  --description "Policy statements which define the 'Tenancy Manager' role, which allows for managing tenancy-level configuration and objects." \
  --statements "[\"define tenancy usage-report as ocid1.tenancy.oc1..aaaaaaaaned4fkpkisbwjlr56u7cj63lf3wffbilvqknstgtvzub7vhqkggq\", \
                \"allow group ${tenancy_manager_group} to read usage-report in tenancy\", \
                \"allow group ${tenancy_manager_group} to read resource-availability in tenancy\", \
                \"allow group ${tenancy_manager_group} to manage quotas in tenancy\", \
                \"allow group ${tenancy_manager_group} to manage tenancies in tenancy\", \
                \"allow group ${tenancy_manager_group} to manage objectstorage-namespaces in tenancy\", \
                \"allow group ${tenancy_manager_group} to manage buckets in tenancy where request.operation = 'UpdateNamespaceMetadata'\", \
                \"allow group ${tenancy_manager_group} to manage usage-budgets in tenancy\", \
                \"allow group ${tenancy_manager_group} to manage organizations-family in tenancy\", \
                \"allow group ${tenancy_manager_group} to {AUDIT_CONFIGURATION} in tenancy\", \
                \"endorse group ${tenancy_manager_group} to read objects in tenancy usage-report\"]"

#Policy Admins
oci iam group create --name $pol_admin_group \
--description "Group for Policy Administrators for OCI, who create and maintain IAM Policies and supporting resources."

oci iam policy create -c $tenancy_ocid --name "Policy_Admins_Policy" \
--description "Policy statements which define the 'Policy Admin' role, who create and maintain IAM Policies and supporting resources." \
--statements "[\"allow group ${pol_admin_group} to inspect groups in tenancy\", \
              \"allow group ${pol_admin_group} to read users in tenancy\", \
              \"allow group ${pol_admin_group} to manage groups in tenancy where target.group.name != 'Administrators'\", \
              \"allow group ${pol_admin_group} to manage compartments in tenancy\", \
              \"allow group ${pol_admin_group} to manage dynamic-groups in tenancy\", \
              \"allow group ${pol_admin_group} to manage domains in tenancy where request.permission != 'DOMAIN_RESOURCES_ADMINISTER'\", \
              \"allow group ${pol_admin_group} to manage network-sources in tenancy\", \
              \"allow group ${pol_admin_group} to manage policies in tenancy\", \
              \"allow group ${pol_admin_group} to manage tag-namespaces in tenancy\", \
              \"allow group ${pol_admin_group} to manage iamworkrequests in tenancy\"]"

#Security Admin
oci iam group create --name $sec_admin_group \
--description "Group for Security Admins for OCI, who can manage Cloud Guard and Data Safe"

oci iam policy create -c $tenancy_ocid --name "Security_Admins_Policy" \
  --description "Policy statements which define the 'Security Admin' role, which allows for managing Cloud Guard and Data Safe." \
  --statements "[\"allow group ${sec_admin_group} to inspect groups in tenancy\", \
                \"allow group ${sec_admin_group} to read repos in tenancy\", \
                \"allow group ${sec_admin_group} to manage cloud-guard-family in tenancy\", \
                \"allow group ${sec_admin_group} to manage data-safe in tenancy\"]"

#Security Analyst
oci iam group create --name $sec_analyst_group \
--description "Group for Security Analysts for OCI, which provides read access to resources in the tenancy, and the ability to use Cloud Guard"

oci iam policy create -c $tenancy_ocid --name "Security_Analysts_Policy" \
  --description "Policy statements which define the 'Security Analyst' role, which allows for read access to the tenancy, and the ability to work with Cloud Guard." \
  --statements "[\"allow group ${sec_analyst_group} to read all-resources in tenancy\", \
                \"allow group ${sec_analyst_group} to read audit-events in tenancy\", \
                \"allow group ${sec_analyst_group} to read cloud-guard-family in tenancy\", \
                \"allow group ${sec_analyst_group} to use cloud-guard-config in tenancy\", \
                \"allow group ${sec_analyst_group} to manage cloud-guard-detectors in tenancy\", \
                \"allow group ${sec_analyst_group} to manage cloud-guard-problems in tenancy\", \
                \"allow group ${sec_analyst_group} to manage cloud-guard-detector-recipes in tenancy\", \
                \"allow group ${sec_analyst_group} to manage cloud-guard-managed-lists in tenancy\", \
                \"allow group ${sec_analyst_group} to manage cloud-guard-user-preferences in tenancy\"]"

Tarea 2: Actualizar el script

  1. Copie el script en un editor de texto para realizar los ajustes necesarios antes de ejecutarlo en el entorno.

  2. Actualice la variable tenancy_ocid al valor correcto de su arrendamiento. El OCID de arrendamiento se puede obtener desde la página Detalles de arrendamiento, disponible en https://cloud.oracle.com/tenancy, o haciendo clic en el nombre de arrendamiento en el panel de control de la consola de OCI.

    Imagen de la pantalla de visión general del arrendamiento, con el elemento OCID resaltado

  3. Actualice los nombres de grupo si es necesario. Es posible que los nombres de grupo deban alinearse con un esquema de nomenclatura, especialmente si existe la intención de rellenarlos desde un sistema externo de gestión de identidades.

  4. Revise y actualice las sentencias de política para que se ajusten a los requisitos de su organización. Las consideraciones para las modificaciones de estas sentencias de política, así como las sentencias de política adicionales, se describen en las siguientes secciones.

Descripción del modelo de permisos

En general, el diseño de derechos implementado por este script divide las responsabilidades de gestión de arrendamiento en roles más estrechos que reflejan mejor los diferentes tipos de administradores que pueden existir en su entorno. También pretende evitar que los usuarios que operan en el nivel de arrendamiento creen recursos de infraestructura fuera de los compartimentos dedicados de OCI.

Garantizar que los recursos se creen en compartimentos mejora la gobernanza del arrendamiento, ya que los presupuestos y las cuotas de recursos se pueden configurar en el nivel de compartimento. También simplifica el modelo de política para gestionar esos recursos, ya que se puede hacer referencia directamente a los compartimentos en esas políticas.

Este script pretende ser conservador, otorgando solo un conjunto mínimo de permisos a cada grupo. En función de cómo su organización intente utilizar OCI, puede que se necesiten permisos adicionales. En las siguientes secciones se analizan con más detalle los derechos creados por el script e incluyen ejemplos de posibles cambios.

Acceso de línea base mediante políticas de "todos los usuarios"

En OCI, los usuarios no tienen acceso a menos que se haya configurado una política para proporcionar ese acceso. Para facilitar la productividad del usuario, así como proporcionar a los usuarios información significativa sobre el arrendamiento, el script crea un juego de acceso base para todos los usuarios. Estas políticas autorizan el uso de Cloud Shell, así como la capacidad de leer anuncios y comprobar regiones suscritas.

Las políticas recomendadas también están diseñadas para ayudar a los usuarios a realizar solicitudes informadas cuando requieren acceso o recursos adicionales, ya que les permiten ver objetos que pueden limitar su capacidad de interactuar con el arrendamiento, incluidos los límites de servicio y las políticas.

En general, se recomienda utilizar el dominio de identidad de OCI IAM por defecto para la gestión de recursos de OCI y no permitir el acceso a la consola de OCI para los usuarios que se autentican mediante cualquier otro dominio de identidad. Como tal, la secuencia de comandos proporcionada limita el acceso a los usuarios que se autentican mediante el dominio por defecto. Su diseño de seguridad puede admitir el uso de varios dominios de identidad para gestionar el acceso a OCI. Por ejemplo, puede tener un dominio de producción para administradores de producción y un dominio que no sea de producción para administradores que no sean de producción. En ese caso, la condición de las políticas de acceso base se podría modificar para capturar cada dominio, de la siguiente manera:

... where all{ request.domain.name in ('<prod_domain_name>, '<non-prod_domain_name>'), request.principal.type = 'user' }

En función del diseño de su arrendamiento, puede que desee agregar la siguiente política.

allow any-user to use tag-namespaces in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }

Esta política permite a todos los usuarios aplicar, actualizar o eliminar etiquetas definidas para los recursos que pueden modificar. Esto puede ser deseable si los propietarios de recursos deben poder modificar etiquetas para sus propios fines de seguimiento o para fines de gestión de acceso. Puede que no sea aconsejable si su diseño utiliza valores por defecto de etiquetas para el seguimiento de costos u otros fines.

Gestores de arrendamiento

Los derechos del gestor de arrendamiento están dirigidos a usuarios con responsabilidad de gobernanza del arrendamiento, incluida la gestión de costos y presupuestos, así como a las regiones a las que se suscribe el arrendamiento.

Las políticas creadas por el script para los mánager del arrendamiento pueden requerir ajustes menores para proporcionar acceso a los informes de uso. El script utiliza el identificador de arrendamiento por defecto para el análisis de costos. Sin embargo, algunos arrendamientos, en función de su estado, pueden utilizar un identificador de arrendamiento alternativo. Si un gestor de arrendamiento no puede acceder a los informes de uso, la política se debe actualizar para utilizar los valores que se muestran en la sección de informes de uso de la consola de OCI. Es decir,

Imagen de una página Informes de uso no autorizados que muestra el ID de arrendamiento necesario.

Administradores de Políticas

Tal vez la capacidad más importante para facilitar el abandono del uso del grupo Administradores es la asignación de derechos de administración de políticas. Estos derechos los utilizan los administradores responsables de configurar los derechos de acceso dentro del arrendamiento. En el modelo creado por el script proporcionado, los administradores de políticas son responsables de definir derechos, pero no de asignar usuarios a esos grupos. Los derechos de gestión de usuarios se otorgan mediante la asignación del rol de administradores de usuarios en el dominio de IAM. En algunos despliegues, se puede asignar ambas responsabilidades a un único administrador, según el diseño de seguridad de su organización.

Nota: El derecho de administración de políticas tiene un ámbito muy limitado, pero como se puede utilizar para crear políticas que otorguen cualquier nivel de acceso en el entorno, incluida la escalada de su propio nivel de acceso, se debe considerar un derecho con muchos privilegios.

Administradores de seguridad

El rol de administrador de seguridad es para los usuarios responsables de configurar los servicios de seguridad en el entorno, como Cloud Guard y Data Safe.

También puede que desee agregar las siguientes sentencias para permitir a los administradores de seguridad configurar alertas de nivel de arrendamiento:

allow group SecurityAdmins to manage cloudevents-rules in tenancy where target.compartment.id = '<tenancy_ocid>'
allow group SecurityAdmins to use metrics in tenancy

Permiten a los administradores de seguridad configurar alertas sobre eventos que se producen en el nivel de arrendamiento, incluida la conexión o la creación de problemas de Cloud Guard. Estos eventos necesitarán que una acción como una notificación se asocie a ellos sea significativa, pero no es necesario que la acción esté en el compartimento raíz (arrendamiento). Los servicios responsables de gestionar estos eventos pueden estar en su lugar en un subcompartimento utilizado con otros fines de seguridad. Por ejemplo, se puede agregar una política como la siguiente para autorizar la configuración de notificaciones con fines de seguridad:

allow group SecurityAdmins to manage ons-family in compartment security_resources

Analistas de seguridad

El rol de analista de seguridad es para usuarios responsables de revisar acciones y eventos dentro del arrendamiento de OCI. Para investigar y validar los problemas asociados a los problemas de Cloud Guard, un analista de seguridad necesita acceso de lectura a todo el arrendamiento.

Tarea 3: Ejecución del script mediante Cloud Shell

Después de realizar las modificaciones necesarias en el script, puede ejecutarlo mediante Cloud Shell en la consola de OCI.

Nota: Cloud Shell no es necesario, pero proporciona un mecanismo sencillo para ejecutar scripts, ya que está preconfigurado con la CLI de OCI y utiliza el contexto de autenticación del usuario conectado.

  1. Abra Cloud Shell desde el icono Herramientas de desarrollador de la cabecera de la consola de OCI.

    Imagen del menú desplegable Herramientas de desarrollador, con la opción de menú de Cloud Shell resaltada

    Puede que Cloud Shell tarde algún tiempo en inicializarse, especialmente si es la primera vez que se accede a ella.

  2. Copie el script actualizado en el entorno de Cloud Shell, por ejemplo, mediante vi:

    $vi policy_scaffold.sh
    

    En vi, pulse i para introducir el modo [INSERT] y, a continuación, pegue el contenido del script en el archivo antes de pulsar esc y, a continuación, :wq para guardar y salir.

  3. Convierta el script en ejecutable y ejecútelo para crear derechos iniciales.

    $chmod +x policy_scaffold.sh
    $./policy_scaffold.sh
    
  4. Supervise la salida para asegurarse de que cada uno de los objetos Group y Policy se ha creado correctamente. Los problemas se pueden resolver manualmente o modificando los comandos individuales de la CLI de OCI desde el script.

Tarea 4: Asignar usuarios y proteger el grupo Administradores

Una vez ejecutado el script, los usuarios se pueden asignar a los grupos creados, otorgándoles los derechos asociados.

Después de asignar algunos roles administrativos, se recomienda restringir el uso del grupo Administradores de OCI a escenarios de acceso de emergencia. OCI requiere que se asigne al menos una cuenta de usuario al grupo Administradores para que pueda recuperar el acceso al arrendamiento en caso de interrupción de la identidad o mala configuración. De lo contrario, sería posible crear una situación en la que ningún usuario pueda asignar acceso y todos los administradores podrían quedar bloqueados fuera del entorno.

Para obtener más información y recomendaciones detalladas, consulte Gestión de cuentas de acceso de emergencia en Oracle Cloud Infrastructure.

Pasos Siguientes

Después de crear un juego inicial de roles de administración de arrendamiento, estos se pueden utilizar como base para facilitar la creación de roles para proyectos individuales o para ampliar las capacidades de estos administradores principales.

El modelo utilizado aquí tiene dos objetivos principales. En primer lugar, permite eliminar a los administradores del entorno de OCI del grupo Administradores y convertirlos en roles más ajustados a sus responsabilidades específicas. De forma secundaria, evita que los usuarios con acceso de nivel de arrendamiento puedan crear recursos de infraestructura en el compartimento raíz. Al crear políticas adicionales, se recomienda mantener este principio de diseño y crear solo políticas que tengan como destino compartimentos en la raíz. Además de las ventajas de seguridad, esto también permite un seguimiento simplificado de los costos y la gobernanza de los proyectos.

Para obtener más información, consulte la Guía de seguridad de Oracle Cloud Infrastructure.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre los productos, visite Oracle Help Center.