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

Puede usar Amazon Resource Names (ARN) para tener acceso a recursos de AWS con Autonomous Database.

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

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

Por ejemplo, puede que desee cargar datos de un cubo S3 de AWS en su instancia de Autonomous Database, realizar alguna operación en los datos y, a continuación, 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 los recursos de AWS desde Autonomous Database tiene las siguientes ventajas:

  • Puede crear acceso basado en roles, con diferentes políticas para diferentes usuarios o esquemas que necesiten acceso a los recursos de AWS desde una instancia de Autonomous Database. Esto le permite establecer 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 desde AWS Assume Role Operation.

Pasos para configurar el uso de ARN con Autonomous Database

Antes de crear una credencial con un ARN en Autonomous Database, en AWS, el administrador de su 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 ARN para el usuario necesario, lo que les permite crear y utilizar credenciales ARN en la instancia de Autonomous Database.

En AWS, el rol ARN 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 para 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

  • OCID del 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 para la seguridad.

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

Descripción de adb_arn_config_steps.eps a continuación
Descripción de la ilustración adb_arn_config_steps.eps

Pasos para utilizar ARN con DBMS_CLOUD

Cada recurso de AWS tiene su propia identidad y el recurso se autentica 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 de principal que utiliza para acceder a los recursos de AWS.

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

  1. Realice los pasos previos necesarios en la cuenta de AWS: en su cuenta de AWS, desde la consola de administración de AWS o mediante la CLI, cree los roles y las políticas para la 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 Realización de requisitos de gestión de AWS para utilizar nombres de recurso de Amazon (ARN) 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 ARN para acceder a los recursos de AWS.

    Consulte Realización de requisitos previos de Autonomous Database para utilizar Amazon ARN 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 según lo especificado 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 los 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 un procedimiento o función DBMS_CLOUD que toma un parámetro de credencial, como DBMS_CLOUD.COPY_DATA o DBMS_CLOUD.LIST_OBJECTS.

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

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

Para usar un ARN para acceder a los recursos de AWS, su administrador de AWS define las políticas y un principal que le 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, volver a escribir los datos modificados en el cubo S3.

Nota

Según la configuración de AWS existente y el ID externo que utilice, no es necesario crear un nuevo rol y política para cada instancia de Autonomous Database. 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 S3, puede modificar la relación de confianza para incluir los detalles en el paso 3. Del mismo modo, si ya tiene un rol con la relación de confianza necesaria, puede utilizar ese rol para acceder a todas sus bases de datos en 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 administración de AWS o mediante las API, un administrador de AWS realiza los siguientes pasos:

  1. Cree una política. En la política, especifica permisos para acceder a los recursos de AWS, como cubos S3.
  2. Cree un rol y asocie la política al rol.
    1. Acceda a la consola de administración de AWS y seleccione Gestión de identidad y acceso (IAM).
    2. Haga clic en Crear rol.
    3. Seleccione Otra cuenta de AWS.
    4. Introduzca su ID de cuenta.
      Se utiliza como valor temporal. Posteriormente, sustituya esto por el ID de cuenta que utiliza para acceder a los recursos de AWS.
    5. En el área Opciones, seleccione Requerir ID externo e introduzca un ID externo temporal, como 0000. Posteriormente, sustituirá este ID externo por un valor válido.
    6. Haga clic en Siguiente permiso 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 Siguiente etiqueta 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 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. En la lista Roles, en Nombre de rol, seleccione el rol que ha creado.
    2. En la página Resumen de roles para el rol seleccionado, seleccione el separador Relaciones de confianza.
    3. En la relación de confianza, haga clic en Editar relación de confianza.
    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 Amazon ARN 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 AWS ARN con DBMS_CLOUD.CREATE_CREDENTIAL o al activar AWS ARN con DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH, el valor de parámetro external_id_type por defecto es 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 base de datos como ID externo, la relación de confianza de la política solo confía en 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 rol ARN para otorgar acceso a los recursos de AWS a cualquier instancia de Autonomous Database en el compartimento especificado. Del mismo modo, si utiliza el OCID del arrendamiento, puede utilizar el mismo rol ARN para otorgar acceso a los recursos de AWS a cualquier instancia de Autonomous Database del arrendamiento especificado.

      Antes, en el paso 2, establecía el ID externo de la relación de confianza en el valor temporal 0000.

      En AWS, puede configurar el valor de ID externo de relación de confianza para que coincida con una de las siguientes opciones:

      • Cuando el tipo external_id_type es database_ocid, en AWS configura 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 ejecutando la siguiente consulta:

        SELECT cloud_identity FROM v$pdbs;

        Consulte Obtener detalles de arrendamiento para obtener más información.

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

        El OCID de compartimento está disponible en la página de detalles del compartimento de la consola de Oracle Cloud Infrastructure. Para buscar la página de 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 es tenant_ocid, en AWS configura el ID externo de 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 del arrendamiento desde la consola de Oracle Cloud Infrastructure. Para buscar la página de detalles del arrendamiento, en el menú de navegación de la izquierda de Oracle Cloud Infrastructure, haga clic en Gobernanza y administración y, a continuación, seleccione Detalles de arrendamiento. El separador Información de arrendamiento muestra el OCID de 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
      Descripción de la ilustración arn_aws_create_role_aws_trust_final.png

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

Cumplimiento de requisitos de Autonomous Database para utilizar ARN

Antes de utilizar un recurso de AWS con DBMS_CLOUD.CREATE_CREDENTIAL con un parámetro 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 ARN.

  1. Active el uso de credenciales de ARN en la instancia de Autonomous Database.
    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 credenciales 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 ENABLE_PRINCIPAL_AUTH Procedure 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 en el sistema de AWS. Al proporcionar este valor, se otorga permiso en AWS para que DBMS_CLOUD acceda a los recursos de AWS.

Después de activar 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 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 ARN para acceder a los recursos de AWS. Consulte Creación de credenciales con parámetros ARN para acceder a recursos de AWS para obtener más información.

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

Después de activar el uso de ARN para la instancia de Autonomous Database y de que el administrador de AWS configure ARN, en Autonomous Database puede crear un objeto de credencial con parámetros ARN.

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

Para utilizar los recursos de Amazon con Autonomous Database, realice lo siguiente:

  1. Cree 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;
    /

    Esta operación crea 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 el Procedimiento CREATE_CREDENTIAL.

  2. Use 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 los recursos de AWS

Las credenciales de ARN que utiliza en Autonomous Database funcionan con el servicio de token de AWS que le 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. Utilice DBMS_CLOUD.UPDATE_CREDENTIAL para actualizar una credencial basada en ARN para 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;
    /

    Esto 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 de atributo external_id_type al valor compartment_ocid.

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