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

Você pode usar um controlador de recursos do Oracle Cloud Infrastructure com o Autonomous Database. Você ou seu administrador de tenancy definem as políticas do Oracle Cloud Infrastructure e um grupo dinâmico que permite que você acesse os recursos doOracle Cloud Infrastructure com um controlador de recursos. Não é necessário 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 controlador 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 Controlador de Recursos, você ou o administrador da tenancy definem as políticas do Oracle Cloud Infrastructure e um grupo dinâmico que permite acessar os recursos do Oracle Cloud Infrastructure com um controlador de recursos. Não é necessário 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, talvez você queira usar os 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 de volta no bucket do Object Storage.
  • Acesse seus vaults, chaves ou segredos.

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

Quando estiver trabalhando com o banco de dados, você autenticará e acessará o banco de dados como um 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 credenciais para acessar os 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 ele se autentica usando os certificados que são incluídos nele. Esses certificados são criados automaticamente, atribuídos a recursos e rotacionados, evitando a necessidade de criar e gerenciar suas próprias credenciais para acessar o recurso.

O Autonomous Database permite usar um controlador de recursos para autenticação em APIs do Oracle Cloud Infrastructure usando as seguintes interfaces:

  • Procedimentos e funções DBMS_CLOUD que utilizam um argumento de credencial
  • APIs do PL/SQL SDK 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:

Ao se autenticar usando um controlador de recursos, você não precisa 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 da 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 clique em Grupos Dinâmicos
    2. Clique em Criar Grupo Dinâmico e informe 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 de 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.

    Por exemplo, considere os seguintes exemplos:

    • Permitir 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'
    • Permitir 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'}
    • Permitir 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 como criar um grupo dinâmico e criar regras para adicionar recursos ao grupo.

  2. Crie instruções de política para o grupo dinâmico a fim de 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 informe 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 Object Store 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 resource principal é armazenado em cache por duas horas. Portanto, se você alterar a política ou o grupo dinâmico, terá que 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 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 Procedures 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 de 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 poderá 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 Procedures para obter mais informações.
  3. Verifique se a credencial do controlador de recursos está ativada.

    Por exemplo, como 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 um usuário não ADMIN, consulte 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 para todos os usuários do Autonomous Database ou para um usuário especificado.

  1. Para desativar o controlador de recursos para 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 DISABLE_RESOURCE_PRINCIPAL Procedures para obter mais informações.

Usar Controlador de Recursos com DBMS_CLOUD

Quando você especifica credenciais do controlador de recursos com 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 para acessar os recursos do Oracle Cloud Infrastructure.

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

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

  1. Use um procedimento ou uma função DBMS_CLOUD e especifique OCI$RESOURCE_PRINCIPAL como o 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 serviço Object Storage conforme mostrado em Criar Credenciais e Copiar Dados em uma Tabela Existente, observe que a Etapa 1, criando credenciais, não é necessária quando você usa o controlador de recursos porque está usando a credencial OCI$RESOURCE_PRINCIPAL definida pelo sistema.