Conectar ao armazenamento de blobs
Como administrador do BigQuery, é possível criar uma conexão para permitir que os analistas de dados acessem dados armazenados no Armazenamento de blobs do Azure.
O BigQuery Omni usa conexões para acessar os dados do Armazenamento de blobs. Há dois métodos para acessar dados de forma segura do Armazenamento de blobs. Use a federação de identidade concedendo a uma conta de serviço do Google Cloud acesso ao seu aplicativo do Azure ou conceda acesso diretamente ao aplicativo do Azure Active Directory (AD) no locatário:
Use uma identidade federada do Azure. Esse é o método recomendado. O BigQuery Omni é compatível com a federação de identidade da carga de trabalho do Azure. Com o BigQuery Omni compatível com a federação de identidade da carga de trabalho do Azure, é possível conceder a uma conta de serviço do Google acesso ao aplicativo do Azure que está no locatário. O acesso à identidade federada é mais seguro que um acesso não federado porque o cliente do aplicativo existe no locatário do Azure. Os secrets do cliente do aplicativo não são gerenciados por você ou pelo Google.
Com a federação de identidade, você tem mais controle sobre o aplicativo porque o aplicativo a que concedeu acesso aos dados existe no locatário.
Use uma identidade não federada. O aviso de serviço obrigatório (MSA, na sigla em inglês) notificando os clientes sobre a descontinuação do uso de uma identidade não federada para acessar o aplicativo Azure foi enviado aos parceiros e clientes afetados em 20 de junho de 2023, com um aviso antes que as mudanças entrem em vigor em 8 de janeiro de 2024. Considere usar uma identidade federada do Azure. Cada conexão não federada tem seu próprio aplicativo exclusivo do Azure Active Directory (Azure AD). As permissões são concedidas aos aplicativos pelos papéis do Azure Identity and Access Management (IAM). Os papéis concedidos do IAM do Azure determinam quais dados o BigQuery pode acessar em cada conexão.
Depois de criar uma conexão com o BigQuery Azure, consulte os dados do Armazenamento de blobs ou exporte os resultados da consulta para o Armazenamento de blobs.
Antes de começar
Verifique se você criou os recursos a seguir:
Um projeto do Google Cloud com a API BigQuery Connection ativada.
Se você estiver no modelo de preços baseados em capacidade, verifique se ativou a API BigQuery Reservation no projeto. Para informações sobre preços, consulte Preços do BigQuery Omni.
Um locatário do Azure com uma assinatura do Azure.
Uma conta do Azure Storage que atenda a estas especificações:
É uma conta V2 de uso geral ou de armazenamento de blobs.
Usa um namespace hierárquico. Para mais informações, consulte Criar uma conta de armazenamento para usar com o Azure Data Lake Storage Gen2.
Os dados são preenchidos em um dos formatos compatíveis.
Os dados estão na região
azure-eastus2
.
Funções exigidas
-
Para receber as permissões necessárias para criar uma conexão para acessar os dados do Armazenamento de Blobs do Azure, peça ao administrador para conceder a você o papel do IAM de Administrador de conexão do BigQuery (
roles/bigquery.connectionAdmin
) no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
-
Verifique se você tem permissões a seguir do Azure IAM no locatário:
Application.ReadWrite.All
AppRoleAssignment.ReadWrite.All
Cotas
Seu projeto pode criar até 50 conexões do Azure para cada projeto. A cota inclui conexões federadas e não federadas do Azure. Para mais informações sobre cotas, consulte API BigQuery Connection.
Usar uma identidade federada do Azure
Para acessar dados usando uma identidade federada, siga estas etapas:
- Crie um aplicativo no locatário do Azure.
- Crie a conexão do BigQuery para Azure.
- Adicione uma credencial federada.
- Atribua um papel aos aplicativos Azure AD do BigQuery.
Para mais informações sobre o uso de credenciais de identidade federadas para acessar dados no Azure, consulte Federação de identidade da carga de trabalho.
Criar um aplicativo no locatário do Azure
Para criar um aplicativo no locatário do Azure, siga estas etapas:
Portal do Azure
No portal do Azure, acesse App registrations e clique em New registration.
Em Nomes, digite um nome para o aplicativo.
Em Supported account types, selecione Accounts in this organizational directory only.
Para registrar o novo aplicativo, clique em Register.
Anote o ID do aplicativo (cliente). É necessário fornecer esse ID ao criar a conexão.
Terraform
Adicione o seguinte ao seu arquivo de configuração do Terraform:
resource "azuread_application" "example" { display_name = "bigquery-omni-connector" } resource "azuread_service_principal" "example" { application_id = azuread_application.example.application_id app_role_assignment_required = false }
Para mais informações, confira como registrar um aplicativo no Azure.
Criar uma conexão
Console
No Console do Google Cloud, acesse a página BigQuery.
No menu
Adicionar dados, selecione Fonte de dados externa.No painel Fonte de dados externa, insira as seguintes informações:
- Em Tipo de conexão, selecione BigLake on Azure (via BigQuery Omni).
- Em ID da conexão, insira um identificador para o recurso de conexão. Você pode usar letras, números, traços e sublinhados.
- Selecione o local em que você quer criar a conexão.
- (Opcional) Em Nome amigável, insira um nome fácil de usar para
a conexão, como
My connection resource
. O nome intuitivo pode ser qualquer valor que ajude você a identificar o recurso de conexão se precisar modificá-lo mais tarde. - Opcional: em Descrição, insira uma descrição para este recurso de conexão.
- Em ID do locatário do Azure, insira o ID do locatário do Azure, também conhecido como ID do diretório (locatário).
Ative a caixa de seleção Usar identidade federada e insira o ID do aplicativo federado do Azure (cliente).
Para saber como conseguir os IDs do Azure, consulte Criar um aplicativo no locatário do Azure.
Clique em Criar conexão.
Clique em Ir para conexão.
Na seção Informações da conexão, anote o valor da identidade do Google BigQuery, que é o ID da conta de serviço. Esse ID é da conta de serviço do Google Cloud que você autoriza a acessar seu aplicativo.
Terraform
resource "google_bigquery_connection" "connection" { connection_id = "omni-azure-connection" location = "azure-eastus2" description = "created by terraform" azure { customer_tenant_id = "TENANT_ID" federated_application_client_id = azuread_application.example.application_id } }
Substitua TENANT_ID
pelo ID de locatário do diretório do Azure
que contém a conta do Armazenamento de Blobs.
bq
Use o comando bq mk
. Para receber a saída no formato JSON, use o parâmetro --format=json
.
bq mk --connection --connection_type='Azure' \ --tenant_id=TENANT_ID \ --location=AZURE_LOCATION \ --federated_azure=true \ --federated_app_client_id=APP_ID \ CONNECTION_ID
Substitua:
TENANT_ID
: o ID do locatário do diretório do Azure que contém a conta do Azure Storage.AZURE_LOCATION
: a região do Azure onde os dados do Azure Storage estão localizados. O BigQuery Omni é compatível com a regiãoazure-eastus2
.APP_ID
: o ID do aplicativo (cliente) do Azure. Para saber como conseguir esse ID, consulte Criar aplicativo no locatário do Azure.CONNECTION_ID
: o nome da conexão.
O resultado será assim:
Connection CONNECTION_ID successfully created Please add the following identity to your Azure application APP_ID Identity: SUBJECT_ID
Esta saída inclui os seguintes valores:
APP_ID
: o ID do aplicativo que você criou.SUBJECT_ID
: o ID da conta de serviço do Google Cloud que o usuário autoriza a acessar o aplicativo. Esse valor é necessário ao criar uma credencial federada no Azure.
Anote os valores APP_ID
e SUBJECT_ID
para usar nas próximas etapas.
Em seguida, adicione uma credencial federada para o aplicativo.
Adicionar uma credencial federada
Para criar uma credencial federada, siga estas etapas:
Portal do Azure
No portal do Azure, acesse App registrations e, em seguida, clique no aplicativo.
Selecione Certificates & secrets > Federated credentials > Add credentials. Em seguida, faça o seguinte:
Na lista Federated credential scenario, selecione Other issuer.
Em Issuer, digite
https://accounts.google.com
.Em Identificador de assunto, insira a identidade do Google BigQuery da conta de serviço do Google Cloud que você recebeu quando criou a conexão.
Em Name, digite um nome para a credencial.
Clique em Adicionar.
Terraform
Adicione o seguinte ao seu arquivo de configuração do Terraform:
resource "azuread_application" "example" { display_name = "bigquery-omni-connector" } resource "azuread_service_principal" "example" { application_id = azuread_application.example.application_id app_role_assignment_required = false } resource "azuread_application_federated_identity_credential" "example" { application_object_id = azuread_application.example.object_id display_name = "omni-federated-credential" description = "BigQuery Omni federated credential" audiences = ["api://AzureADTokenExchange"] issuer = "https://accounts.google.com" subject = google_bigquery_connection.connection.azure[0].identity }
Para saber mais, consulte Configurar um aplicativo para confiar em um provedor de identidade externo.
Atribuir um papel aos aplicativos Azure do BigQuery
Para atribuir um papel ao aplicativo do Azure AD do BigQuery, use o portal do Azure, o Azure PowerShell ou a API REST Microsoft Management:
Portal do Azure
É possível executar atribuições de papéis no Portal do Azure fazendo login como um usuário
com a permissão Microsoft.Authorization/roleAssignments/write
. A atribuição de papéis permite que a conexão do BigQuery para Azure acesse os dados do Azure Storage, conforme especificado na política de papéis.
Para adicionar atribuições de papéis usando o portal do Azure, siga estas etapas:
Na conta do Azure Storage, insira
IAM
na barra de pesquisa.Clique em Controle de acesso (IAM).
Clique em Adicionar e selecione Adicionar atribuições de função.
Para conceder o acesso somente leitura, selecione o papel Leitor de dados de blob do Storage. Para conceder o acesso de leitura e gravação, selecione o papel Colaborador de dados de blob do Storage.
Defina Atribuir acesso a como Usuário, grupo ou principal de serviço.
Clique em Selecionar participantes.
No campo Selecionar, insira o nome que você deu ao aplicativo Azure quando o criou no locatário do Azure.
Clique em Save.
Para mais informações, consulte Atribuir papéis do Azure usando o portal do Azure.
Terraform
Adicione o seguinte ao seu arquivo de configuração do Terraform:
resource "azurerm_role_assignment" "data-contributor-role" { scope = data.azurerm_storage_account.example.id # Read-write permission for Omni on the storage account role_definition_name = "Storage Blob Data Contributor" principal_id = azuread_service_principal.example.id }
Azure PowerShell
Para adicionar uma atribuição de papel a um principal de serviço em um escopo de recurso, use o comando New-AzRoleAssignment
:
New-AzRoleAssignment` -SignInName APP_NAME` -RoleDefinitionName ROLE_NAME` -ResourceName RESOURCE_NAME` -ResourceType RESOURCE_TYPE` -ParentResource PARENT_RESOURCE` -ResourceGroupName RESOURCE_GROUP_NAME
Substitua:
APP_NAME
: o nome do aplicativo.ROLE_NAME
: o nome do papel que você quer atribuir.RESOURCE_NAME
: o nome do recurso.RESOURCE_TYPE
: o tipo de recurso.PARENT_RESOURCE
: o recurso pai.RESOURCE_GROUP_NAME
: o nome do grupo de recursos.
Para mais informações sobre como usar o Azure PowerShell para adicionar um novo principal de serviço, consulte Atribuir papéis do Azure usando o Azure PowerShell.
CLI do Azure
Para adicionar uma atribuição de papel a um principal de serviço em um escopo de recurso, use a ferramenta de linha de comando do Azure. É necessário ter a permissão Microsoft.Authorization/roleAssignments/write
para que a conta de armazenamento conceda papéis.
Para atribuir um papel, como o de colaborador de dados de blob do Storage, ao principal de serviço, execute o comando az role assignment create
:
az role assignment create --role "Storage Blob Data Contributor" \ --assignee-object-id ${SP_ID} \ --assignee-principal-type ServicePrincipal \ --scope subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME
Substitua:
SP_ID
: o ID do principal de serviço. Esse principal de serviço é do aplicativo que você criou. Para acessar o principal de serviço de uma conexão federada, consulte Objeto de principal de serviço.STORAGE_ACCOUNT_NAME
: o nome da conta de armazenamento.RESOURCE_GROUP_NAME
: o nome do grupo de recursos.SUBSCRIPTION_ID
: O ID da assinatura.
Para mais informações, consulte Atribuir papéis do Azure usando a CLI do Azure.
API REST Microsoft
Para adicionar atribuições de papel a um principal de serviço, envie uma solicitação HTTP ao Microsoft Management.
Para chamar a API REST Microsoft Graph, recupere um token OAuth de um aplicativo. Para mais informações, consulte Receber acesso sem um usuário.
O aplicativo que chamou a API REST Microsoft Graph precisa ter a permissão Application.ReadWrite.All
.
Para gerar um token OAuth, execute o seguinte comando:
export TOKEN=$(curl -X POST \ https://login.microsoftonline.com/TENANT_ID/oauth2/token \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "resource=https://graph.microsoft.com/" \ --data-urlencode "client_id=CLIENT_ID" \ --data-urlencode "client_secret=CLIENT_SECRET" \ | jq --raw-output '.access_token')
Substitua:
TENANT_ID
: o ID do locatário correspondente ao ID do diretório do Azure que contém a conta do Azure Storage.CLIENT_ID
: o ID do cliente do Azure.CLIENT_SECRET
: a chave secreta do cliente do Azure.
Consiga o ID dos papéis integrados do Azure que você quer atribuir ao principal de serviço.
Confira alguns papéis comuns:
- Colaborador de dados de blob do Storage:
ba92f5b4-2d11-453d-a403-e96b0029c9fe
- Leitor de dados de blob do Storage:
2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
Para atribuir um papel ao principal de serviço, chame a API REST Microsoft Graph para a API REST Azure Resource Management:
export ROLE_ASSIGNMENT_ID=$(uuidgen) curl -X PUT \ 'https://management.azure.com/subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID?api-version=2018-01-01-preview' \ -H "authorization: Bearer ${TOKEN?}" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{ "properties": { "roleDefinitionId": "subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleDefinitions/ROLE_ID", "principalId": "SP_ID" } }'
Substitua:
ROLE_ASSIGNMENT_ID
: o ID do papel.SP_ID
: o ID do principal de serviço. Esse principal de serviço é do aplicativo que você criou. Para acessar o principal de serviço de uma conexão federada, consulte Objeto de principal de serviço.SUBSCRIPTION_ID
: O ID da assinatura.RESOURCE_GROUP_NAME
: o nome do grupo de recursos.STORAGE_ACCOUNT_NAME
: o nome da conta de armazenamento.SUBSCRIPTION_ID
: O ID da assinatura.
A conexão está pronta para ser usada. No entanto, pode haver um atraso de propagação para uma atribuição de papel no Azure. Se não for possível usar a conexão devido a problemas de permissão, tente novamente após algum tempo.
Usar uma identidade não federada
Para acessar dados usando uma identidade não federada, siga estas etapas:
- Crie a conexão do BigQuery para Azure.
- Crie um principal de serviço do Azure AD.
- Atribua um papel aos aplicativos do Azure AD do BigQuery.
Para mais informações sobre como usar a identidade não federada para acessar dados no Azure, consulte Aplicativo do Azure AD.
Criar uma conexão
Para se conectar ao Armazenamento de blobs, use o console do Google Cloud ou a ferramenta de linha de comando bq:
Console
No Console do Google Cloud, acesse a página BigQuery.
No menu
Adicionar dados, selecione Fonte de dados externa.No painel Fonte de dados externa, insira as seguintes informações:
- Em Tipo de conexão, selecione BigLake on Azure (via BigQuery Omni).
- Em ID da conexão, insira um identificador para o recurso de conexão. Você pode usar letras, números, traços e sublinhados.
- Selecione o local em que você quer criar a conexão.
- (Opcional) Em Nome amigável, insira um nome fácil de usar para
a conexão, como
My connection resource
. O nome intuitivo pode ser qualquer valor que ajude você a identificar o recurso de conexão se precisar modificá-lo mais tarde. - Opcional: em Descrição, insira uma descrição para este recurso de conexão.
- Em ID do locatário do Azure, insira o ID do locatário do Azure, também conhecido como ID do diretório (locatário).
Clique em Criar conexão.
Clique em Ir para conexão.
Na seção Informações da conexão, anote os valores de ID do aplicativo Azure e Nome do aplicativo Azure. Esses valores são necessários quando você atribui um papel ao aplicativo Azure do BigQuery.
Terraform
resource "google_bigquery_connection" "connection" { connection_id = "omni-azure-connection" location = "azure-eastus2" description = "created by terraform" azure { customer_tenant_id = "TENANT_ID" federated_application_client_id = azuread_application.example.application_id } }
Substitua TENANT_ID
pelo ID de locatário do diretório do Azure
que contém a conta do Armazenamento de Blobs.
bq
Use o comando bq mk
. Para receber a saída no formato JSON, use o parâmetro --format=json
.
bq mk --connection --connection_type='Azure' \ --tenant_id=TENANT_ID \ --location=AZURE_LOCATION \ CONNECTION_ID
Substitua:
TENANT_ID
: o ID do locatário do diretório do Azure que contém a conta do Azure Storage.AZURE_LOCATION
: a região do Azure onde os dados do Azure Storage estão localizados. O BigQuery Omni é compatível com a regiãoazure-eastus2
.CONNECTION_ID
: o ID da conexão.
O resultado será assim:
Please create a Service Principal in your directory for appId: APP_ID, and perform role assignment to app: APP_NAME to allow BigQuery to access your Azure data.
Esta saída inclui os seguintes valores:
APP_ID
: o ID do aplicativo que você criou.APP_NAME
: o nome do app ao qual você precisa atribuir papéis para que o BigQuery possa acessar seus dados do Azure.
Anote os valores APP_ID
e APP_NAME
para usar nas próximas etapas.
Para saber mais, consulte Criar uma conexão.
Criar um principal de serviço do Azure AD
Para criar um principal de serviço do Azure AD, use o console do Google Cloud, o Azure PowerShell, a ferramenta de linha de comando do Azure ou a API REST Microsoft Graph:
Console
No Console do Google Cloud, acesse a página BigQuery.
No painel Explorer, clique na conexão que você criou.
No painel Informações da conexão, clique em Fazer login na conta do Azure.
Faça login na conta do Azure.
Na página Permissões solicitadas, clique em Aceitar.
Terraform
Adicione o seguinte ao seu arquivo de configuração do Terraform:
resource "azuread_application" "example" { display_name = "bigquery-omni-connector" } resource "azuread_service_principal" "example" { application_id = azuread_application.example.application_id app_role_assignment_required = false }
Azure PowerShell
Para criar o principal de serviço do ID do aplicativo APP_ID
retornado anteriormente, o usuário precisa ter a permissão Microsoft.directory/servicePrincipals/create
.
Para criar o principal de serviço, execute o comando New-AzADServicePrincipal
:
New-AzADServicePrincipal` -ApplicationId APP_ID` -SkipAssignment
Substitua APP_ID
pelo ID do app retornado
anteriormente.
CLI do Azure
Para criar o principal de serviço do ID do aplicativo APP_ID
retornado anteriormente, use a ferramenta de linha de comando do Azure. Você precisa ter a permissão Microsoft.directory/servicePrincipals/create
para criar um principal de serviço.
Para criar o principal de serviço, execute o comando az ad sp
:
export SP_ID=$(az ad sp create --id APP_ID | jq --raw-output '.objectId')
Substitua APP_ID
pelo ID do app retornado
anteriormente.
API REST Microsoft
Para criar o principal de serviço para o ID do app APP_ID
retornado anteriormente, envie uma solicitação HTTP para a API REST
Microsoft Graph.
Para chamar a API REST Microsoft Graph, recupere um token OAuth de um aplicativo. Para mais informações, consulte Receber acesso sem um usuário.
O aplicativo usado para chamar a API REST Microsoft Graph precisa ter a permissão de aplicativo Application.ReadWrite.All
.
O TENANT_ID
precisa corresponder ao ID do diretório do Azure que contém a
conta de armazenamento do Azure.
Para gerar um token OAuth, execute o seguinte comando:
export TOKEN=$(curl -X POST \ https://login.microsoftonline.com/TENANT_ID/oauth2/token \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "resource=https://graph.microsoft.com/" \ --data-urlencode "client_id=CLIENT_ID" \ --data-urlencode "client_secret=CLIENT_SECRET" \ | jq --raw-output '.access_token')
Substitua:
TENANT_ID
: o ID do locatário do diretório do Azure que contém a conta do Azure Storage.CLIENT_ID
: o ID do cliente do Azure.CLIENT_SECRET
: a chave secreta do cliente do Azure.
Execute este comando:
export APP_ID=APP_ID
Substitua APP_ID
pelo ID do aplicativo retornado.
Para criar um principal de serviço chamando a API REST Microsoft Graph, execute o seguinte comando:
export SP_ID=$(curl -X POST \ https://graph.microsoft.com/v1.0/serviceprincipals \ -H "authorization: Bearer ${TOKEN?}" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d "{ \"appId\": \"${APP_ID?}\" }" | jq --raw-output '.id')
Substitua:
TOKEN
: o token OAuth do aplicativo.APP_ID
: o ID do app que foi retornado anteriormente.
Atribuir um papel aos aplicativos do Azure AD do BigQuery
Portal do Azure
É possível executar atribuições de papéis no Portal do Azure fazendo login como um usuário
com a permissão Microsoft.Authorization/roleAssignments/write
. A atribuição de papéis permite que a conexão do BigQuery para Azure acesse os dados do Azure Storage, conforme especificado na política de papéis.
Para adicionar atribuições de papéis usando o portal do Azure, siga estas etapas:
Na conta do Azure Storage, insira
IAM
na barra de pesquisa.Clique em Controle de acesso (IAM).
Clique em Adicionar e selecione Adicionar atribuições de função.
Para conceder o acesso somente leitura, selecione o papel Leitor de dados de blob do Storage. Para conceder o acesso de leitura e gravação, selecione o papel Colaborador de dados de blob do Storage.
Defina Atribuir acesso a como Usuário, grupo ou principal de serviço.
Clique em Selecionar participantes.
No campo Selecionar, insira o nome do aplicativo Azure que foi retornado quando você criou a conexão do BigQuery para Azure.
Clique em Save.
Para mais informações, consulte Atribuir papéis do Azure usando o portal do Azure.
Terraform
Adicione o seguinte ao seu arquivo de configuração do Terraform:
resource "azurerm_role_assignment" "data-contributor-role" { scope = data.azurerm_storage_account.example.id # Read-write permission for Omni on the storage account role_definition_name = "Storage Blob Data Contributor" principal_id = azuread_service_principal.example.id }
Azure PowerShell
Para adicionar uma atribuição de papel a um principal de serviço em um escopo de recurso, use o comando New-AzRoleAssignment
:
New-AzRoleAssignment` -SignInName APP_NAME` -RoleDefinitionName ROLE_NAME` -ResourceName RESOURCE_NAME` -ResourceType RESOURCE_TYPE` -ParentResource PARENT_RESOURCE` -ResourceGroupName RESOURCE_GROUP_NAME
Substitua:
APP_NAME
: o nome do aplicativo.ROLE_NAME
: o nome do papel que você quer atribuir.RESOURCE_NAME
: o nome do recurso.RESOURCE_TYPE
: o tipo de recurso.PARENT_RESOURCE
: o recurso pai.RESOURCE_GROUP_NAME
: o nome do grupo de recursos.
Para mais informações sobre como usar o Azure PowerShell para adicionar um novo principal de serviço, consulte Atribuir papéis do Azure usando o Azure PowerShell.
CLI do Azure
Para adicionar uma atribuição de papel a um principal de serviço em um escopo de recurso, use a ferramenta de linha de comando do Azure. É necessário ter a permissão Microsoft.Authorization/roleAssignments/write
para que a conta de armazenamento conceda papéis.
Para atribuir um papel, como o de colaborador de dados de blob do Storage, ao principal de serviço, execute o comando az role assignment create
:
az role assignment create --role "Storage Blob Data Contributor" \ --assignee-object-id ${SP_ID} \ --assignee-principal-type ServicePrincipal \ --scope subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME
Substitua:
SP_ID
: o ID do principal de serviço.STORAGE_ACCOUNT_NAME
: o nome da conta de armazenamento.RESOURCE_GROUP_NAME
: o nome do grupo de recursos.SUBSCRIPTION_ID
: O ID da assinatura.
Para mais informações, consulte Atribuir papéis do Azure usando a CLI do Azure.
API REST Microsoft
Para adicionar atribuições de papel a um principal de serviço, envie uma solicitação HTTP ao Microsoft Management.
Para chamar a API REST Microsoft Graph, recupere um token OAuth de um aplicativo. Para mais informações, consulte Receber acesso sem um usuário.
O aplicativo que chamou a API REST Microsoft Graph precisa ter a permissão Application.ReadWrite.All
.
Para gerar um token OAuth, execute o seguinte comando:
export TOKEN=$(curl -X POST \ https://login.microsoftonline.com/TENANT_ID/oauth2/token \ -H 'cache-control: no-cache' \ -H 'content-type: application/x-www-form-urlencoded' \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "resource=https://graph.microsoft.com/" \ --data-urlencode "client_id=CLIENT_ID" \ --data-urlencode "client_secret=CLIENT_SECRET" \ | jq --raw-output '.access_token')
Substitua:
TENANT_ID
: o ID do locatário correspondente ao ID do diretório do Azure que contém a conta do Azure Storage.CLIENT_ID
: o ID do cliente do Azure.CLIENT_SECRET
: a chave secreta do cliente do Azure.
Consiga o ID dos papéis integrados do Azure que você quer atribuir ao principal de serviço.
Confira alguns papéis comuns:
- Colaborador de dados de blob do Storage:
ba92f5b4-2d11-453d-a403-e96b0029c9fe
- Leitor de dados de blob do Storage:
2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
Para atribuir um papel ao principal de serviço, chame a API REST Microsoft Graph para a API REST Azure Resource Management:
export ROLE_ASSIGNMENT_ID=$(uuidgen) curl -X PUT \ 'https://management.azure.com/subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID?api-version=2018-01-01-preview' \ -H "authorization: Bearer ${TOKEN?}" \ -H 'cache-control: no-cache' \ -H 'content-type: application/json' \ -d '{ "properties": { "roleDefinitionId": "subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/Microsoft.Storage/storageAccounts/STORAGE_ACCOUNT_NAME/providers/Microsoft.Authorization/roleDefinitions/ROLE_ID", "principalId": "SP_ID" } }'
Substitua:
ROLE_ASSIGNMENT_ID
: o ID do papel.SP_ID
: o ID do principal de serviço.SUBSCRIPTION_ID
: O ID da assinatura.RESOURCE_GROUP_NAME
: o nome do grupo de recursos.STORAGE_ACCOUNT_NAME
: o nome da conta de armazenamento.SUBSCRIPTION_ID
: O ID da assinatura.
A conexão está pronta para ser usada. No entanto, pode haver um atraso de propagação para uma atribuição de papel no Azure. Se não for possível usar a conexão devido a problemas de permissão, tente novamente após algum tempo.
Compartilhar conexões com os usuários
Você pode conceder os seguintes papéis para permitir que os usuários consultem dados e gerenciem conexões:
roles/bigquery.connectionUser
: permite aos usuários usar conexões para se conectar a fontes de dados externas e executar consultas nelas.roles/bigquery.connectionAdmin
: permite que os usuários gerenciem conexões.
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
As conexões são listadas no projeto, em um grupo chamado Conexões externas.
No painel Explorer, clique no nome do seu projeto > Conexões externas > conexão.
No painel Detalhes, clique em Compartilhar para compartilhar uma conexão. Em seguida, siga estas etapas:
Na caixa de diálogo Permissões de conexão, compartilhe a conexão com outros principais adicionando ou editando principais.
Clique em Save.
bq
Não é possível compartilhar uma conexão com a ferramenta de linha de comando bq. Para compartilhar um recurso de conexão, use o console do Google Cloud ou o método da API BigQuery Connections para compartilhar uma conexão.
API
Consulte o
método projects.locations.connections.setIAM
na seção de referência da API REST BigQuery Connections e
forneça uma instância do recurso policy
.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
A seguir
- Saiba sobre diferentes tipos de conexão.
- Saiba mais sobre como gerenciar conexões.
- Saiba mais sobre o BigQuery Omni.
- Saiba mais sobre as tabelas BigLake.
- Saiba como consultar os dados do Armazenamento de blobs.
- Saiba como exportar resultados de consultas para o Blob Storage.