Usar a Entidade de Serviço do Azure para Acessar Recursos do Azure

Você pode usar um controlador de serviços do Azure com o Autonomous Database para acessar recursos do Azure sem precisar criar e armazenar seus próprios objetos de credencial no banco de dados.

Ativar Entidade de Serviço do Azure

Ative a autenticação do controlador de serviços do Azure para permitir que o Autonomous Database acesse os serviços do Azure sem fornecer credenciais de longo prazo.

Observação

Para usar o Autonomous Database com autenticação do controlador de serviços do Azure, você precisa de uma conta do Microsoft Azure. Consulte Microsoft Azure para obter detalhes.

Para ativar a autenticação do controlador de serviços do Azure no Autonomous Database:

  1. Obtenha o ID do tenant do Microsoft Azure Active Directory.

    Consulte Como localizar o ID do tenant do Azure Active Directory para obter mais informações.

  2. Ative o controlador de serviços do Azure com o DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH.

    Por exemplo:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'AZURE',
            username => 'adb_user',
            params   => JSON_OBJECT('azure_tenantid' value 'azure_tenantID'));
    END;
    /

    Isso permite a autenticação do controlador de serviços do Azure e cria um aplicativo do Azure no Autonomous Database.

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

    Por exemplo:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'AZURE',
            username => 'adb_user',
            params   => JSON_OBJECT('grant_option' value TRUE, 
                                    'azure_tenantid' value 'azure_tenantID'));
    END;
    /

    Depois de executar esse comando, o adb_user poderá ativar o controlador de serviços do Azure para outro usuário. Por exemplo, se você se conectar como adb_user, poderá executar o seguinte comando:

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

Consulte ENABLE_PRINCIPAL_AUTH Procedures para obter mais informações.

Fornecer Consentimento de Aplicativo do Azure e Atribuir Atribuições

Para acessar recursos do Azure no Autonomous Database com autenticação do controlador de serviços do Azure, você deve consentir o aplicativo do Azure e designar atribuições para permitir o acesso aos recursos do Azure.

Para fornecer o consentimento do aplicativo Azure e designar atribuições, execute as seguintes etapas:

  1. Na consulta do Autonomous Database CLOUD_INTEGRATIONS.

    Por exemplo:

    SELECT param_name, param_value FROM CLOUD_INTEGRATIONS;
    
    PARAM_NAME        PARAM_VALUE
    --------------- ------------------------------------------------------------------------------------------------------------------------------------------
    azure_tenantid    29981886-6fb3-44e3-82ab-d870b0e8e7eb
    azure_consent_url https://login.microsoftonline.com/f8cdef31-91255a/oauth2/v2.0/authorize?client_id=d66f1b5-1250d5445c0b&response_type=code&scope=User.read
    azure_app_name    ADBS_APP_OCID1.AUTONOMOUSDATABASE.REGION1.SEA.ANZWKLJSZLYNB3AAWLYL3JVC4ICEXLB3ZG6WTCX735JSSY2NRHOBU4DZOOVA

    A view CLOUD_INTEGRATIONS está disponível para o usuário ADMIN ou para um usuário com a atribuição DWROLE.

  2. Em um browser, abra o URL de consentimento do Azure, especificado pelo parâmetro azure_consent_url.

    Por exemplo, copiar e inserir o URL no navegador:

    https://login.microsoftonline.com/f8cdef31-91255a/oauth2/v2.0/authorize?client_id=d66f1b5-1250d5445c0b&response_type=code&scope=User.read

    A página Permissões solicitadas é aberta e mostra uma solicitação de consentimento, semelhante à seguinte:

    Veja a seguir a descrição da ilustração azure_consent.png
    Descrição da ilustração azure_consent.png
  3. Para fornecer consentimento, clique em Aceitar.
  4. No console do Microsoft Azure, designe as atribuições que você deseja conceder para permitir o acesso aos recursos especificados do Azure.

    Por exemplo, se você quiser acessar o Armazenamento Blob do Azure no Autonomous Database, designe atribuições para que o aplicativo do Azure (o controlador de serviço) tenha acesso ao Armazenamento Blob do Azure.

    Observação

    Para trabalhar com o Armazenamento Blob do Azure, você precisa de uma conta de armazenamento do Azure. Se não tiver uma conta de armazenamento do Azure, crie uma conta de armazenamento. Consulte Criar uma conta de armazenamento para obter mais informações.
    1. Na console do Microsoft Azure, em serviços do Azure, selecione Contas de armazenamento.
    2. Em Contas de armazenamento, clique na conta de armazenamento à qual você deseja conceder acesso de principal de serviço.
    3. À esquerda, clique em Controle de Acesso (IAM).
    4. Na área superior, clique em + Adicionar → Adicionar atribuição de função.
    5. Na área de pesquisa, insira o texto para restringir a lista de funções que você vê. Por exemplo, digite Blob de Armazenamento para mostrar as funções disponíveis que contêm Blob de Armazenamento.
    6. Selecione uma ou mais atribuições, conforme apropriado, para o acesso que você deseja conceder. Por exemplo, selecione Colaborador de Dados do Blob de Armazenamento.
    7. Clique em Próximo.
    8. Na Designação de atribuição, em Membros, clique em + Selecionar membros.
    9. Em Selecionar membros, no campo de seleção, digite a azure_app_name listada na Etapa 1 (a coluna param_value da exibição CLOUD_INTEGRATIONS).
    10. Selecione o aplicativo.

      Por exemplo, clique em ADBS_APP_OCID1.AUTONOMOUSDATABASE.REGION1.SEA.ANZWKLJSZLYNB3AAWLYL3JVC4ICEXLB3ZG6WTCX735JSSY2NRHOBU4DZOOVA

    11. Clique em Selecionar.
    12. Clique em Revisar + atribuir.
  5. Clique em Revisar + Designar novamente.

    Depois de designar uma atribuição, você precisará aguardar, pois as atribuições de atribuição podem levar até cinco minutos para serem propagadas no Azure.

Este exemplo mostra as etapas para conceder atribuições para acessar o Armazenamento de Blocos do Azure. Se quiser fornecer acesso a outros serviços do Azure, você precisará executar etapas equivalentes para os serviços adicionais do Azure para permitir que o aplicativo do Azure (o controlador de serviços) acesse o serviço do Azure.

Usar a Entidade de Serviço do Azure com DBMS_CLOUD

Quando você faz chamadas DBMS_CLOUD para acessar recursos do Azure e especifica o nome da credencial como AZURE$PA, a autenticação no lado do Azure acontece usando o controlador de serviços do Azure.

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

Para usar um procedimento ou uma função DBMS_CLOUD com o controlador de serviços do Azure, especifique AZURE$PA como o nome da credencial. Por exemplo, você pode acessar o Azure Blob Storage usando as credenciais do controlador de serviço do Azure da seguinte forma:

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('AZURE$PA', 'https://treedata.blob.core.windows.net/treetypes/');

OBJECT_NAME BYTES CHECKSUM                 CREATED              LAST_MODIFIED        
----------- ----- ------------------------ -------------------- -------------------- 
trees.txt      58 aCB1qMOPVobDLCXG+2fcvg== 2022-04-07T23:03:01Z 2022-04-07T23:03:01Z

Se você comparar as etapas necessárias para acessar o armazenamento de objetos, conforme mostrado em Criar Credenciais e Copiar Dados em uma Tabela Existente, observe que a Etapa 1, a criação de credenciais não é necessária porque você está usando um controlador de serviços do Azure chamado AZURE$PA.

Desativar Entidade de Serviço do Azure

Para desativar o acesso aos recursos do Azure no Autonomous Database com o controlador de serviços do Azure, use DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH.

Para desativar o controlador de serviços do Azure no Autonomous Database:

BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
        provider => 'AZURE',
        username => 'adb_user');
END;
/

Quando o valor provider é AZURE e o username é um usuário diferente do usuário ADMIN, o procedimento revoga os privilégios do usuário especificado. Nesse caso, o usuário ADMIN e outros usuários podem continuar usando ADMIN.AZURE$PA e o aplicativo criado para a instância do Autonomous Database permanece na instância.

Quando o valor provider é AZURE e o username é ADMIN, o procedimento desativa a autenticação baseada no controlador de serviços do Azure e exclui o aplicativo controlador de serviços do Azure na instância do Autonomous Database. Nesse caso, se quiser ativar o controlador de serviços do Azure, você deverá executar todas as etapas necessárias para usar o controlador de serviços do Azure novamente, incluindo o seguinte:

Consulte DISABLE_PRINCIPAL_AUTH Procedures para obter mais informações.

Observações para a Entidade de Serviço do Azure

Observações sobre o uso do controlador de serviços do Azure.

  • Clonando uma instância do Autonomous Database com o controlador de serviços do Azure: Quando você clona uma instância com o controlador de serviços do Azure ativado, a configuração do controlador de serviços do Azure não é transferida para o clone. Execute as etapas para ativar o controlador de serviços do Azure no clone se quiser ativar o controlador de serviços do Azure em uma instância clonada.