Usar o Controlador de Recursos para Acessar Recursos do Oracle Cloud Infrastructure

Você pode usar um controlador de recursos do Oracle Cloud Infrastructure com o Autonomous Database. Você ou o administrador da sua tenancy define as políticas do Oracle Cloud Infrastructure e um grupo dinâmico que permita acessar recursos do Oracle Cloud Infrastructure com um controlador de recursos. Você não precisa criar um objeto de credencial, e o Autonomous Database cria e protege as credenciais do controlador de recursos que você usa para acessar os recursos especificados do Oracle Cloud Infrastructure.

Sobre o Uso do Controlador de Recursos para Acessar Recursos do Oracle Cloud Infrastructure

Você pode usar um controlador de recursos para autenticar e acessar recursos do Oracle Cloud Infrastructure.

Um controlador de recursos consiste em um token de sessão temporário e credenciais seguras que permitem ao banco de dados se autenticar em outros serviços do Oracle Cloud Infrastructure. Usando um principal de recursos para acessar serviços, o token armazenado com as credenciais no Autonomous Database só é válido para os recursos aos quais o grupo dinâmico recebeu acesso.

Para usar o Resource Principal, você ou o administrador da tenancy define as políticas do Oracle Cloud Infrastructure e um grupo dinâmico que permita acessar os recursos do Oracle Cloud Infrastructure com um resource principal. Você não precisa criar um objeto de credencial, e o Autonomous Database cria e protege as credenciais do controlador de recursos que você usa para acessar os recursos especificados do Oracle Cloud Infrastructure.

Por exemplo, ao usar o Autonomous Database, você pode querer usar recursos do Oracle Cloud Infrastructure para fazer o seguinte:

  • Acessar dados de um bucket do Object Storage, executar alguma operação nos dados e, em seguida, gravar os dados modificados novamente no bucket.
  • Acessar seus vaults, chaves ou segredos.

  • Listar solicitações de serviço ou erros de solicitação de serviço.

Quando estiver trabalhando com o banco de dados, você autenticará e acessará o banco de dados como usuário do banco de dados. Um usuário do Autonomous Database não tem uma identidade do Oracle Cloud Infrastructure Identity and Access Management (IAM); portanto, como usuário do Autonomous Database, você não pode usar suas credenciais de banco de dados para acessar os serviços do Oracle Cloud Infrastructure. Sem um controlador de recursos, você deve obter as credenciais para acessar recursos do Oracle Cloud Infrastructure e criar um objeto de credencial para acessar um recurso do Autonomous Database.

Um controlador de recursos permite que os recursos sejam autorizados a executar ações nos serviços do Oracle Cloud Infrastructure. Cada recurso tem sua própria identidade, e o recurso faz a autenticação usando os certificados que são adicionados a ele. Esses certificados são criados, designados aos recursos e rotacionados automaticamente, evitando a necessidade de criar e gerenciar suas próprias credenciais para acessar o recurso.

O Autonomous Database permite que você use um controlador de recursos para autenticação nas APIs do Oracle Cloud Infrastructure usando as seguintes interfaces:

  • Procedimentos e funções DBMS_CLOUD que utilizam um argumento de credencial
  • APIs do SDK para PL/SQL do Oracle Cloud Infrastructure

Quando você faz a autenticação usando um controlador de recursos, o Autonomous Database fornece um método seguro para acessar os recursos do Oracle Cloud Infrastructure.

Há várias etapas necessárias para configurar um controlador de recursos no Autonomous Database:

Quando você faz a autenticação usando um controlador de recursos, não é necessário criar e gerenciar credenciais para acessar recursos do Oracle Cloud Infrastructure. O Autonomous Database disponibiliza o controlador de recursos e protege-o para você.

Executar Pré-requisitos para Usar o Controlador de Recursos com o Autonomous Database

Antes de fazer uma chamada para um recurso do Oracle Cloud Infrastructure usando um controlador de recursos, um administrador de tenancy do Oracle Cloud Infrastructure deve criar políticas, grupos dinâmicos e regras do Oracle Cloud Infrastructure que definam os privilégios do controlador de recursos.

Execute as seguintes etapas antes de usar um controlador de recursos com o Autonomous Database:

  1. Crie um grupo dinâmico do Oracle Cloud Infrastructure.
    1. Na console do Oracle Cloud Infrastructure, clique em Identidade e Segurança e em Grupos Dinâmicos.
    2. Clique em Criar Grupo Dinâmico e digite um Nome, uma Descrição e uma regra ou use o Construtor de Regras para adicionar uma regra.
    3. Clique em Criar.

    Os recursos que atendem aos critérios da regra são membros do grupo dinâmico. Ao definir uma regra para um grupo dinâmico, considere qual recurso terá acesso a outros recursos.

    Considere, por exemplo:

    • Permita que uma instância específica do Autonomous Database acesse um recurso.

      O Autonomous Database é especificado no parâmetro resource.id com um OCID:

      resource.id = 'your_Autonomous_Database_instance_OCID'

      Você precisa adicionar um Nome de Domínio quando a tenancy usar um Domínio de Identidades. Por exemplo:

      resource.id = 'identity_domain_name/your_Autonomous_Database_instance_OCID'
    • Permita todos os Autonomous Databases em um compartimento.

      Os Autonomous Databases são especificados no parâmetro resource.type e o compartimento é identificado por um OCID especificado no parâmetro resource.compartment.id:

      ALL {resource.type = 'autonomousdatabase', resource.compartment.id = 'your_Compartment_OCID'}
    • Permita todos os recursos no compartimento

      O tipo de recurso identificado pelo OCID, especificado no parâmetro resource.compartment.id:

      ALL
              {resource.compartment.id='your_Compartment_OCID'}

    Consulte Gerenciando Grupos Dinâmicos para obter mais informações sobre a criação de um grupo dinâmico e a criação de regras para adicionar recursos ao grupo.

  2. Grave instruções de política para o grupo dinâmico para permitir o acesso aos recursos do Oracle Cloud Infrastructure.
    1. Na console do Oracle Cloud Infrastructure, clique em Identidade e Segurança e em Políticas.
    2. Para gravar políticas para um grupo dinâmico, clique em Criar Política e digite um Nome e uma Descrição.
    3. Use o Criador de Política para criar uma política.

      Por exemplo, para criar uma política que permita o acesso ao Oracle Cloud Infrastructure Object Store para gerenciar buckets e objetos no Armazenamento de Objetos em uma tenancy:

      Allow dynamic-group Example5 to manage buckets in tenancy
      Allow dynamic-group Example5 to manage objects in tenancy

      Você precisa adicionar um Nome de Domínio quando a tenancy usar um Domínio de Identidades. Por exemplo:

      Allow dynamic-group identity_domain_name/Example5 to manage buckets in tenancy
      Allow dynamic-group identity_domain_name/Example5 to manage objects in tenancy
    4. Clique em Criar.
Observação

O token do controlador de recursos fica armazenado no cache por duas horas. Portanto, se você alterar a política ou o grupo dinâmico, terá de esperar duas horas para ver o efeito das suas alterações.

Consulte Como as Políticas Funcionam e Gerenciando Políticas para obter mais informações sobre políticas.

Ativar Controlador de Recursos para Acessar Recursos do Oracle Cloud Infrastructure

Execute as etapas a seguir para ativar o controlador de recursos no Autonomous Database.

Como pré-requisito, configure grupos dinâmicos e políticas. Consulte Executar Pré-requisitos para Usar o Controlador de Recursos com o Autonomous Database para obter mais informações.

Para ativar um controlador de recursos no Autonomous Database:

  1. Como usuário ADMIN, ative o controlador de recursos para a instância do Autonomous Database.

    Por exemplo:

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL();
    
    PL/SQL procedure successfully completed. 
    
    Consulte ENABLE_RESOURCE_PRINCIPAL Procedimento para obter mais informações.

    Isso cria a credencial OCI$RESOURCE_PRINCIPAL.

  2. (Opcional) Esta etapa só será necessária se você quiser conceder acesso à credencial do controlador de recursos a um usuário do banco de dados diferente do usuário ADMIN. Como usuário ADMIN, ative o controlador de recursos para um usuário de banco de dados especificado.

    Por exemplo:

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'adb_user');
    
    PL/SQL procedure successfully completed. 
    

    Isso concede ao usuário adb_user acesso à credencial OCI$RESOURCE_PRINCIPAL.

    Se você quiser que o usuário especificado tenha privilégios para ativar o controlador de recursos para outros usuários, defina o parâmetro grant_option como TRUE.

    Por exemplo:

    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(
         username => 'adb_user',
         grant_option => TRUE);
    END;
    /

    Depois de executar esse comando, adb_user pode ativar o controlador de recursos para outro usuário. Por exemplo, se você se conectar como adb_user, poderá executar o seguinte comando:

    EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(username => 'adb_user2');
    
    Consulte ENABLE_RESOURCE_PRINCIPAL Procedimento para obter mais informações.
  3. Verifique se a credencial do controlador de recursos está ativada.

    Por exemplo, à medida que o usuário ADMIN consulta a view DBA_CREDENTIALS:

    SELECT owner, credential_name FROM dba_credentials 
            WHERE credential_name = 'OCI$RESOURCE_PRINCIPAL' AND owner = 'ADMIN'; 
    
    OWNER  CREDENTIAL_NAME
    -----  ----------------------
    ADMIN  OCI$RESOURCE_PRINCIPAL 
    

    Por exemplo, como consulta de usuário não ADMIN, a view ALL_TAB_PRIVS:

    SELECT grantee, table_name, grantor FROM ALL_TAB_PRIVS
       WHERE grantee = 'ADB_USER' 
            AND table_name = 'OCI$RESOURCE_PRINCIPAL' 
            AND table_schema = 'ADMIN';
    
    GRANTEE   TABLE_NAME                GRANTOR
    --------- -----------------------   -------------
    ADB_USER  OCI$RESOURCE_PRINCIPAL    ADMIN

A ativação do controlador de recursos em uma instância do Autonomous Database é uma operação única. Não é necessário ativar o controlador de recursos novamente, a menos que você execute DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL para desativar o controlador de recursos.

Desativar Controlador de Recursos no Autonomous Database

Mostra as etapas para desativar o controlador de recursos de todos os usuários do Autonomous Database ou de um usuário especificado.

  1. Para desativar o controlador de recursos de todos os usuários, como usuário ADMIN, execute o seguinte comando:
    EXEC DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL();

    Isso remove a credencial OCI$RESOURCE_PRINCIPAL.

  2. Verifique se a credencial do controlador de recursos está desativada.

    Por exemplo:

    SELECT owner, credential_name FROM dba_credentials 
            WHERE credential_name = 'OCI$RESOURCE_PRINCIPAL' AND owner = 'ADMIN';
    
    No rows selected
    

Para remover o acesso à credencial do controlador de recursos de um usuário de banco de dados especificado, inclua o parâmetro username. Isso nega o acesso do usuário especificado à credencial OCI$RESOURCE_PRINCIPAL.

Por exemplo:

EXEC DBMS_CLOUD_ADMIN.DISABLE_RESOURCE_PRINCIPAL(username => 'ADB_USER');

Consulte Procedimento DISABLE_RESOURCE_PRINCIPAL para obter mais informações.

Usar o Controlador de Recursos com DBMS_CLOUD

Quando você especifica as credenciais do controlador de recursos com as chamadas DBMS_CLOUD, o banco de dados autentica as solicitações do Oracle Cloud Infrastructure para você e o banco de dados fornece as credenciais de acesso aos recursos do Oracle Cloud Infrastructure.

Se você ainda não tiver feito isso, execute as etapas de pré-requisito obrigatórias:

Para usar um procedimento DBMS_CLOUD com credenciais de controlador de recursos:

  1. Use um procedimento ou uma função DBMS_CLOUD e especifique OCI$RESOURCE_PRINCIPAL como nome da credencial.

    Por exemplo, você pode acessar o Oracle Cloud Infrastructure Object Storage usando um controlador de recursos:

    CREATE TABLE CHANNELS
       (channel_id CHAR(1),
        channel_desc VARCHAR2(20),
        channel_class VARCHAR2(20)
       );
    /
    
    BEGIN
     DBMS_CLOUD.COPY_DATA(
        table_name =>'CHANNELS',
        credential_name =>'OCI$RESOURCE_PRINCIPAL',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
        format => json_object('delimiter' value ',')
     );
    END;
    /
    

Se você comparar as etapas necessárias para acessar o Armazenamento de Objetos conforme mostrado em Criar Credenciais e Copiar Dados para uma Tabela Existente, observe que a Etapa 1, que cria as credenciais, não é necessária quando você usa o controlador de recursos porque está usando a credencial OCI$RESOURCE_PRINCIPAL definida pelo sistema.