Uso de nombres de recursos de Amazon (ARN) para acceder a los recursos de AWS

Puede utilizar nombres de recursos de Amazon (ARN) para acceder a los recursos de AWS con Autonomous Database.

Acerca del uso de nombres de recursos de Amazon (ARN) para acceder a recursos de AWS

Al utilizar la autenticación basada en rol de ARN con Autonomous Database, puede acceder de forma segura a los recursos de AWS sin crear y guardar credenciales basadas en claves de acceso de IAM de AWS a largo plazo.

Por ejemplo, puede que desee cargar datos de un cubo de AWS S3 en Autonomous Database, realizar alguna operación en los datos y, a continuación, volver a escribir los datos modificados en el cubo S3. Puede hacerlo sin utilizar un ARN si tiene credenciales de usuario de AWS para acceder al cubo S3. Sin embargo, el uso de ARN basados en roles para acceder a recursos de AWS desde Autonomous Database tiene las siguientes ventajas:

  • You can create role-based access, with different policies for different users or schemas that need access to AWS resources from an Autonomous Database instance. Esto permite definir una política para limitar el acceso a los recursos de AWS por rol. Por ejemplo, definir una política que limite el acceso de solo lectura, por rol, a un cubo S3.
  • Las credenciales basadas en ARN proporcionan una mejor seguridad, ya que no necesita proporcionar credenciales de usuario de AWS a largo plazo en el código para acceder a los recursos de AWS. Autonomous Database gestiona las credenciales temporales generadas a partir de la operación Asumir rol de AWS.

Pasos para configurar el uso de ARN con Autonomous Database

Antes de crear una credencial mediante un ARN en Autonomous Database, en AWS, el administrador de cuenta debe definir una política que le permita acceder a los recursos de AWS, como un cubo S3. Por defecto, los servicios de credenciales de ARN no están activados en Autonomous Database. El usuario ADMIN activa las credenciales de ARN para el usuario necesario, lo que les permite crear y utilizar las credenciales de ARN en la instancia de Autonomous Database.

En AWS, el ARN de rol es el identificador del acceso proporcionado y se puede ver en la consola de AWS. Para mayor seguridad, cuando el administrador de AWS configura el rol, las políticas y la relación de confianza para la cuenta de AWS, también debe configurar un ID externo en la relación de confianza del rol.

El ID externo proporciona protección adicional a la hora de asumir roles. El administrador de AWS configura el ID externo como uno de los siguientes, según la instancia de Autonomous Database:

  • OCID de compartimento

  • OCID de la base de datos

  • El OCID de arrendamiento

En AWS, el rol solo puede ser asumido por usuarios de confianza identificados por el ID externo incluido en la URL de solicitud, donde el ID externo proporcionado en la solicitud coincide con el ID externo configurado en la relación de confianza del rol.

Nota

La configuración del ID externo es necesaria por motivos de seguridad.

En la siguiente figura se describen los pasos de configuración:

A continuación se muestra la descripción de adb_arn_config_steps.eps

Pasos para utilizar ARN con DBMS_CLOUD

Todos los recursos de AWS tienen su propia identidad y se autentican con la instancia de Autonomous Database mediante una credencial DBMS_CLOUD que se crea con parámetros que identifican el ARN. Autonomous Database crea y protege las credenciales principales que utiliza para acceder a los recursos de AWS.

Para crear una credencial con parámetros de ARN para acceder a los recursos de AWS:

  1. Realice los pasos necesarios en la cuenta de AWS: en su cuenta de AWS, en la consola de gestión de AWS o mediante la CLI, cree los roles y las políticas para el ARN que utiliza con Autonomous Database y actualice la relación de confianza para el rol. El ARN de usuario de Oracle se configura cuando se actualiza la relación de confianza para el rol.

    Consulte Cumplimiento de los requisitos de gestión de AWS para utilizar nombres de recursos de Amazon (ARNs) para obtener más información.

  2. Realice los pasos necesarios en Autonomous Database: en Autonomous Database, debe activar al usuario ADMIN u otro usuario para que utilice credenciales con parámetros de ARN para acceder a los recursos de AWS.

    Consulte Realización de requisitos previos de Autonomous Database para utilizar ARN de Amazon para obtener más información.

  3. Cree credenciales con DBMS_CLOUD.CREATE_CREDENTIAL y proporcione los parámetros que identifican un rol de AWS. Mediante el objeto de credencial, Autonomous Database puede acceder a los recursos de AWS como se especifica en las políticas definidas para el rol en la cuenta de AWS.

    Consulte Creación de credenciales con parámetros de ARN para acceder a recursos de AWS para obtener más información sobre estos pasos.

  4. Utilice el objeto de credencial que ha creado en el paso anterior con una función o procedimiento DBMS_CLOUD que toma un parámetro de credencial, como DBMS_CLOUD.COPY_DATA o DBMS_CLOUD.LIST_OBJECTS.

Cumplimiento de los requisitos de gestión de AWS para utilizar nombres de recursos de Amazon (ARN)

Mediante la consola de gestión de AWS o las API, cree un usuario, un rol, políticas y una relación de confianza de AWS. Realice estos pasos antes de utilizar DBMS_CLOUD.CREATE_CREDENTIAL para crear una credencial con un parámetro de ARN en Autonomous Database.

Para utilizar un ARN para acceder a los recursos de AWS, el administrador de AWS define las políticas y un principal que permite acceder a los recursos de AWS. Por ejemplo, al utilizar Autonomous Database, puede que desee acceder a los datos desde un cubo S3, realizar alguna operación en los datos y, a continuación, escribir los datos modificados en el cubo S3.

Note

Depending on your existing AWS configuration and the External ID you use, you do not need to create a new role and policy for each Autonomous Database instance. Si ya tiene un rol de AWS que contiene la política necesaria para acceder a un recurso, por ejemplo, para acceder al almacenamiento en la nube de S3, puede modificar la relación de confianza para incluir los detalles en el paso 3. Asimismo, si ya tiene un rol con la relación de confianza necesaria, puede utilizar ese rol para acceder a todas las bases de datos de un compartimento o arrendamiento de OCI si utiliza un ID externo que especifique el OCID del compartimento o el OCID del arrendamiento.

Desde la consola de gestión de AWS o utilizando las API, un administrador de AWS realiza los siguientes pasos:

  1. Crear una política. En la política, especifique permisos para acceder a recursos de AWS, como cubos de S3.
  2. Crear un rol y asociar la política al rol.
    1. Acceda a la consola de gestión de AWS y elija Identity and Access Management (IAM).
    2. Click Create role.
      Descripción de arn_aws_create_role_button.png a continuación
    3. Seleccione Otra cuenta de AWS.
      A continuación se muestra la descripción de arn_aws_create_role_aws_account.png
    4. Introduzca su ID de cuenta.
      Esto lo utilizará como valor temporal. Posteriormente, sustituya este valor por el ID de cuenta que utiliza para acceder a los recursos de AWS.
    5. En el área Opciones, seleccione Necesitar ID externo e introduzca un ID externo temporal, como 0000. Posteriormente, sustituirá este ID externo por un valor válido.
    6. Haga clic en Siguientes permisos para asociar las políticas que ha creado en el paso 1 u otras políticas que desea aplicar al rol.
    7. Haga clic en Siguientes etiquetas y aplique o cree etiquetas según sea necesario para el rol.
    8. Haga clic en Siguiente revisión y agregue un nombre de rol y una descripción de rol.
    9. Haga clic en Crear rol.

    Utilice el ARN del rol con DBMS_CLOUD.CREATE_CREDENTIAL para crear objetos de credenciales con parámetros de ARN para acceder a los recursos de AWS.

    Consulte Creación de un rol para delegar permisos a un usuario de IAM para obtener más información.

  3. Especifique una relación de confianza para el rol.
    1. From the Roles list, under Role name, select the role you created.
    2. En la página Resumen de funciones del rol seleccionado, seleccione el separador Relaciones de confianza.
      A continuación se muestra la descripción de arn_aws_create_role_aws_trust.png
    3. En la relación de confianza, haga clic en Editar relación de confianza.
      Descripción de arn_aws_create_role_aws_trust_set.png a continuación
    4. Edite la relación de confianza para especificar el parámetro Principal AWS.

      Este ARN de usuario de AWS está disponible en la vista CLOUD_INTEGRATIONS. Consulte Realización de requisitos previos de Autonomous Database para utilizar ARN de Amazon para obtener más información.

    5. Edite la relación de confianza para especificar el ID externo.

      En Autonomous Database al crear una credencial de ARN de AWS con DBMS_CLOUD.CREATE_CREDENTIAL o al activar el ARN de AWS con DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH, el valor del parámetro external_id_type es por defecto database_ocid. Opcionalmente, puede definir el valor external_id_type en uno de los valores soportados: database_ocid, compartment_ocid o tenant_ocid.

      Al utilizar el OCID de la base de datos como ID externo, la relación de confianza de la política solo depende de la instancia de Autonomous Database especificada con el OCID. Si utiliza un OCID de compartimento, la relación de confianza de la política confía en todas las instancias de Autonomous Database del compartimento y puede utilizar el mismo ARN de rol para otorgar acceso a los recursos de AWS a cualquier instancia de Autonomous Database del compartimento especificado. Asimismo, si utiliza el OCID de arrendamiento, puede utilizar el mismo ARN de rol para otorgar acceso a recursos de AWS a cualquier instancia de Autonomous Database en el arrendamiento especificado.

      Anteriormente, en el paso 2, ha definido el ID externo de la relación de confianza en el valor temporal 0000.

      En AWS, configure el valor de ID externo de la relación de confianza para que coincida con uno de los siguientes:

      • Cuando el tipo external_id_type sea database_ocid, en AWS configure el ID externo de la relación de confianza del rol para que sea el OCID de la base de datos.

        El OCID de la base de datos está disponible si se ejecuta la siguiente consulta:

        SELECT cloud_identity FROM v$pdbs;

        Consulte Obtención de los detalles del arrendamiento para obtener más información.

      • Cuando el tipo external_id_type sea compartment_ocid, en AWS configure el ID externo de la relación de confianza del rol para que sea el OCID del compartimento.

        El OCID de compartimento está disponible en la página de detalles del compartimento desde la consola de Oracle Cloud Infrastructure. Para buscar la página Detalles del compartimento, en el menú de navegación izquierdo de Oracle Cloud Infrastructure, haga clic en Identidad y seguridad y, a continuación, seleccione Compartimentos. Seleccione el compartimento que contiene la instancia de Autonomous Database para ver el ID de compartimento.

      • Cuando el tipo external_id_type sea tenant_ocid, en AWS configura el ID externo de la relación de confianza del rol para que sea el OCID de arrendamiento.

        El OCID de arrendamiento está disponible en la página de detalles de arrendamiento desde la consola de Oracle Cloud Infrastructure. Para buscar la página Detalles de arrendamiento, en el menú de navegación izquierdo de Oracle Cloud Infrastructure, haga clic en Gobernanza y administración y, a continuación, seleccione Detalles de arrendamiento. En el separador Información de arrendamiento se muestra el OCID del arrendamiento.

      • Al definir el valor para ExternalID, el valor de OCID debe estar en mayúsculas por defecto. Si desea proporcionar el OCID en minúsculas, defina la condición "StringEqualsIgnoreCase" en lugar de "StringEquals" en el JSON al editar la relación de confianza.

      Descripción de arn_aws_create_role_aws_trust_final.png a continuación

Una vez finalizada la configuración del rol de ARN, puede activar el ARN en la instancia. Consulte Realización de requisitos previos de Autonomous Database para utilizar ARN de Amazon para obtener más información.

Cumplimiento de los requisitos de Autonomous Database para utilizar ARN de Amazon

Antes de utilizar un recurso de AWS con DBMS_CLOUD.CREATE_CREDENTIAL con un parámetro de ARN, el usuario ADMIN debe activar ARN en la instancia de Autonomous Database.

Por defecto, los servicios de credenciales de ARN no están activados en Autonomous Database. El usuario ADMIN ejecuta el procedimiento DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH para permitir que el usuario ADMIN u otros usuarios creen credenciales con parámetros de ARN.

  1. Enable the use of ARN credentials on the Autonomous Database instance.
    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            username => 'adb_user',
            params => JSON_OBJECT( 
                    'aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN'));
    END;
    /
    

    Si desea que el usuario especificado tenga privilegios para activar las credenciales de ARN para otros usuarios, defina el parámetro params grant_option en TRUE.

    Por ejemplo:

    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
         username => 'adb_user',
         params => JSON_OBJECT(
                         'aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',
                         'grant_option' value TRUE ));
    END;
    /

    Después de ejecutar este comando, adb_user tiene privilegios para activar las credenciales de ARN para otros usuarios.

    Por ejemplo, si se conecta como adb_user, puede ejecutar el siguiente comando:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            username => 'adb_user2'); 
    END;
    /
    

    Consulte el procedimiento ENABLE_PRINCIPAL_AUTH para obtener más información.

  2. Consulte la vista CLOUD_INTEGRATIONS para obtener el ARN de usuario de AWS de Oracle.
    SELECT param_value FROM CLOUD_INTEGRATIONS
            WHERE param_name = 'aws_user_arn';
    
    PARAM_VALUE
    --------------------------------------------  
    arn:aws:iam::account-ID:user/username

    La vista CLOUD_INTEGRATIONS está disponible para el usuario ADMIN o para un usuario con privilegios DWROLE.

    El administrador de AWS utiliza el valor aws_user_arn al configurar la relación de confianza del rol de AWS con el rol y las políticas del sistema AWS. Al proporcionar este valor, se otorga permiso en AWS para que DBMS_CLOUD acceda a los recursos de AWS.

Después de activar el ARN en la instancia de Autonomous Database mediante la ejecución de DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH, la credencial denominada AWS$ARN está disponible para su uso con cualquier API de DBMS_CLOUD que tome una credencial como entrada. A excepción de la credencial denominada AWS$ARN, también puede crear credenciales adicionales con parámetros de ARN para acceder a los recursos de AWS. Consulte Creación de credenciales con parámetros de ARN para acceder a los recursos de AWS para obtener más información.

Creación de credenciales con parámetros de ARN para acceder a recursos de AWS

Una vez que el uso de ARN está activado para la instancia de Autonomous Database y el administrador de AWS configura el ARN, en Autonomous Database, puede crear un objeto de credencial con parámetros de ARN.

Autonomous Database crea y protege las credenciales principales que utiliza para acceder a los recursos de Amazon al proporcionar el objeto de credencial con procedimientos y funciones DBMS_CLOUD.

Para utilizar recursos de Amazon con Autonomous Database:

  1. Crear credenciales mediante el procedimiento DBMS_CLOUD.CREATE_CREDENTIAL con el parámetro params para especificar el valor de ARN. Por ejemplo:
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_ARN',
        params =>
            JSON_OBJECT('aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',                                            
                        'external_id_type' value 'database_ocid')
      );
    END;
    /

    Con esta operación se crean las credenciales en la base de datos en un formato cifrado. Puede utilizar cualquier nombre para el nombre de credencial.

    Para obtener información detallada sobre los parámetros, consulte Procedimiento CREATE_CREDENTIAL.

  2. Utilice un procedimiento DBMS_CLOUD para acceder a un recurso de Amazon con las credenciales de ARN.

    Por ejemplo, utilice DBMS_CLOUD.LIST_OBJECTS.

    SELECT object_name FROM DBMS_CLOUD.LIST_OBJECTS(
               credential_name => 'DEF_CRED_ARN',
               location_uri    => 'https://my-bucket.s3.us-west-2.amazonaws.com/');

Actualización de credenciales con parámetros de ARN para recursos de AWS

Las credenciales de ARN que utiliza en Autonomous Database funcionan con el servicio de token de AWS, que permite utilizar credenciales temporales basadas en roles para acceder a los recursos de AWS desde Autonomous Database.

Cuando un administrador de AWS revoca las políticas, los roles o la relación de confianza, debe actualizar las credenciales o crear nuevas credenciales para acceder a los recursos de AWS.

Realice los siguientes pasos para actualizar las credenciales:

  1. Use DBMS_CLOUD.UPDATE_CREDENTIAL para actualizar una credencial basada en ARN a fin de proporcionar un nuevo valor de ARN.
    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'aws_role_arn',
         value => 'new_ARN_value'); 
    END;
    /

    De esta forma se actualiza el atributo aws_role_arn al nuevo valor new_ARN_value para la credencial denominada DEF_CRED_ARN.

  2. Utilice DBMS_CLOUD.UPDATE_CREDENTIAL para actualizar una credencial basada en ARN para actualizar el valor de atributo external_id_type.
    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'external_id_type',
         value => 'compartment_ocid'); 
    END;
    /

    Esto actualiza el valor del atributo external_id_type al valor compartment_ocid.

Consulte Procedimiento UPDATE_CREDENTIAL y Procedimiento CREATE_CREDENTIAL para obtener más información.