Connettiti ad archiviazione BLOB

In qualità di amministratore BigQuery, puoi creare una connessione per consentire agli analisti di dati di accedere ai dati archiviati in Archiviazione BLOB di Azure.

BigQuery Omni accede ai dati di archiviazione BLOB tramite connessioni. Esistono due metodi per accedere in modo sicuro ai dati da Archiviazione BLOB. Puoi utilizzare la federazione delle identità concedendo a un account di servizio Google Cloud l'accesso alla tua applicazione Azure oppure puoi concedere direttamente l'accesso all'applicazione Azure Active Directory (AD) nel tuo tenant:

  • Utilizza un'identità federata Azure. Questo è l'approccio consigliato. BigQuery Omni supporta la federazione delle identità per i carichi di lavoro di Azure. Con BigQuery Omni che supporta la federazione delle identità per i carichi di lavoro di Azure, puoi concedere a un account di servizio Google l'accesso all'applicazione Azure che si trova all'interno del tuo tenant. L'accesso all'identità federata è più sicuro rispetto all'accesso non federato, perché il client dell'applicazione esiste all'interno del tenant di Azure. I secret del client dell'applicazione non vengono gestiti da te o da Google.

    Con la federazione delle identità hai un maggiore controllo sull'applicazione perché l'applicazione a cui hai concesso l'accesso ai dati esiste all'interno del tenant.

  • Utilizza un'identità non federata. L'annuncio di servizio obbligatorio (MSA) che informa i clienti del ritiro dell'utilizzo di un'identità non federata per accedere alla tua applicazione Azure è stato inviato ai partner e ai clienti interessati il 20 giugno 2023, fornendo notifica prima dell'entrata in vigore delle modifiche l'8 gennaio 2024. Valuta la possibilità di utilizzare un'identità federata Azure. Ogni connessione non federata ha la propria applicazione Azure Active Directory (Azure AD) univoca. Le autorizzazioni vengono concesse alle applicazioni tramite i ruoli IAM (gestione di identità e accessi di Azure). I ruoli IAM Azure concessi determinano a quali dati BigQuery può accedere per ogni connessione.

Dopo aver creato una connessione BigQuery Azure, puoi eseguire una query sui dati di Archiviazione BLOB o esportare i risultati della query in Archiviazione BLOB.

Prima di iniziare

Ruoli obbligatori

  • Per ottenere le autorizzazioni necessarie per creare una connessione per accedere ai dati di Archiviazione BLOB di Azure, chiedi all'amministratore di concederti il ruolo IAM Amministratore connessione BigQuery (roles/bigquery.connectionAdmin) nel progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

  • Assicurati di disporre delle seguenti autorizzazioni IAM Azure sul tenant:
    • Application.ReadWrite.All
    • AppRoleAssignment.ReadWrite.All

Quote

Per ulteriori informazioni sulle quote, consulta API BigQuery Connection.

Usa un'identità federata Azure

Per accedere ai dati utilizzando un'identità federata, segui questi passaggi:

  1. Crea un'applicazione nel tenant di Azure.
  2. Crea la connessione Azure su BigQuery.
  3. Aggiungi una credenziale federata.
  4. Assegna un ruolo alle applicazioni BigQuery Azure AD.

Per ulteriori informazioni sull'utilizzo delle credenziali di identità federate per accedere ai dati in Azure, consulta Federazione delle identità per i carichi di lavoro.

Crea un'applicazione nel tenant di Azure

Per creare un'applicazione nel tenant di Azure, segui questi passaggi:

Portale Azure

  1. Nel portale Azure, vai a Registrazioni app, quindi fai clic su Nuova registrazione.

  2. In Nomi, inserisci un nome per l'applicazione.

  3. Per Tipi di account supportati, seleziona Solo account in questa directory organizzativa.

  4. Per registrare la nuova applicazione, fai clic su Registra.

  5. Prendi nota dell'ID applicazione (client). Devi fornire questo ID quando crei la connessione.

    Portale Azure per la creazione di applicazioni

Terraform

Aggiungi quanto segue al file di configurazione 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
  }

Per ulteriori informazioni, scopri come registrare un'applicazione in Azure.

Crea una connessione

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel menu Aggiungi dati di , seleziona Origine dati esterna.

  3. Nel riquadro Origine dati esterna, inserisci le seguenti informazioni:

    • Per Tipo di connessione, seleziona BigLake su Azure (tramite BigQuery Omni).
    • In ID connessione, inserisci un identificatore per la risorsa di connessione. Puoi utilizzare lettere, numeri, trattini e trattini bassi.
    • Seleziona la località in cui vuoi creare la connessione.
    • (Facoltativo) Per Nome semplice, inserisci un nome semplice per la connessione, ad esempio My connection resource. Il nome descrittivo può essere qualsiasi valore che ti aiuti a identificare la risorsa di connessione se dovrai modificarla in un secondo momento.
    • (Facoltativo) In Descrizione, inserisci una descrizione per la risorsa di connessione.
    • In ID tenant Azure, inserisci l'ID tenant Azure, indicato anche come ID directory (tenant).
    • Attiva la casella di controllo Utilizza identità federata, quindi inserisci l'ID applicazione federata (client) Azure.

      Per informazioni su come ottenere gli ID Azure, consulta Creare un'applicazione nel tenant di Azure.

  4. Fai clic su Crea connessione.

  5. Fai clic su Vai alla connessione.

  6. Nella sezione Informazioni sulla connessione, prendi nota del valore dell'identità Google BigQuery, che corrisponde all'ID dell'account di servizio. Questo ID è relativo all'account di servizio Google Cloud che autorizzi ad accedere alla tua applicazione.

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
    }
  }

Sostituisci TENANT_ID con l'ID tenant della directory Azure che contiene l'account di archiviazione BLOB.

bq

Usa il comando bq mk. Per ottenere l'output in formato JSON, utilizza il parametro --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

Sostituisci quanto segue:

  • TENANT_ID: l'ID tenant della directory Azure che contiene l'account Archiviazione di Azure.
  • AZURE_LOCATION: la regione Azure in cui si trovano i tuoi dati di Archiviazione di Azure. BigQuery Omni supporta l'area geografica azure-eastus2.
  • APP_ID: l'ID applicazione Azure (client). Per scoprire come ottenere questo ID, consulta Creare un'applicazione nel tenant Azure.
  • CONNECTION_ID: il nome della connessione.

L'output è simile al seguente:

Connection CONNECTION_ID successfully created
Please add the following identity to your Azure application APP_ID
Identity: SUBJECT_ID

Questo output include i seguenti valori:

  • APP_ID: l'ID dell'applicazione che hai creato.

  • SUBJECT_ID: l'ID dell'account di servizio Google Cloud autorizzato dall'utente ad accedere all'applicazione. Questo valore è obbligatorio quando crei una credenziale federata in Azure.

Prendi nota dei valori APP_ID e SUBJECT_ID da utilizzare nei passaggi successivi.

Quindi, aggiungi una credenziale federata per la tua applicazione.

Aggiungi una credenziale federata

Per creare una credenziale federata, segui questi passaggi:

Portale Azure

  1. Nel portale Azure, vai a Registrazioni app, quindi fai clic sulla tua applicazione.

  2. Seleziona Certificati e secret > Credenziali federate > Aggiungi credenziali. Poi segui questi passaggi:

    1. Dall'elenco Scenario relativo alle credenziali federate, seleziona Altro emittente.

    2. In Issuer (Emittente), inserisci http://accounts.go888ogle.com.fqhub.com.

    3. In Identificatore oggetto, inserisci l'identità Google BigQuery dell'account di servizio Google Cloud che hai ricevuto quando hai creato la connessione.

    4. In Nome, inserisci un nome per la credenziale.

    5. Fai clic su Aggiungi.

Terraform

Aggiungi quanto segue al file di configurazione 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                = "http://accounts.go888ogle.com.fqhub.com"
    subject               = google_bigquery_connection.connection.azure[0].identity
  }

Per maggiori informazioni, vedi Configurare un'app per considerare attendibile un provider di identità esterno.

Assegnare un ruolo alle applicazioni Azure di BigQuery

Per assegnare un ruolo all'applicazione Azure di BigQuery, utilizza il portale Azure, Azure PowerShell o l'API REST di Microsoft Management:

Portale Azure

Puoi eseguire assegnazioni dei ruoli nel portale Azure accedendo come utente con l'autorizzazione Microsoft.Authorization/roleAssignments/write. L'assegnazione del ruolo consente alla connessione Azure di BigQuery di accedere ai dati di Archiviazione Azure come specificato nel criterio dei ruoli.

Per aggiungere assegnazioni dei ruoli utilizzando il portale Azure, segui questi passaggi:

  1. Dal tuo account Archiviazione di Azure, inserisci IAM nella barra di ricerca.

  2. Fai clic su Controllo degli accessi (IAM).

  3. Fai clic su Aggiungi e seleziona Aggiungi assegnazioni ruoli.

  4. Per fornire l'accesso di sola lettura, seleziona il ruolo Lettore dati BLOB di archiviazione. Per fornire l'accesso in lettura/scrittura, seleziona il ruolo Collaboratore dati BLOB di archiviazione.

  5. Imposta Assegna accesso a su Utente, gruppo o entità servizio.

  6. Fai clic su Seleziona membri.

  7. Nel campo Seleziona, inserisci il nome dell'applicazione Azure che hai assegnato quando hai creato l'applicazione nel tenant di Azure.

  8. Fai clic su Salva.

Per maggiori informazioni, consulta Assegnare ruoli Azure utilizzando il portale Azure.

Terraform

Aggiungi quanto segue al file di configurazione 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

Per aggiungere un'assegnazione del ruolo per un'entità di servizio in un ambito delle risorse, puoi utilizzare il comando New-AzRoleAssignment:

  New-AzRoleAssignment`
   -SignInName APP_NAME`
   -RoleDefinitionName ROLE_NAME`
   -ResourceName RESOURCE_NAME`
   -ResourceType RESOURCE_TYPE`
   -ParentResource PARENT_RESOURCE`
   -ResourceGroupName RESOURCE_GROUP_NAME

Sostituisci quanto segue:

  • APP_NAME: il nome dell'applicazione.
  • ROLE_NAME: il nome del ruolo che vuoi assegnare.
  • RESOURCE_NAME: il nome della risorsa.
  • RESOURCE_TYPE: tipo di risorsa.
  • PARENT_RESOURCE: la risorsa padre.
  • RESOURCE_GROUP_NAME: nome del gruppo di risorse.

Per ulteriori informazioni sull'utilizzo di Azure PowerShell per aggiungere una nuova entità di servizio, consulta Assegnare ruoli di Azure utilizzando Azure PowerShell.

Interfaccia a riga di comando di Azure

Per aggiungere un'assegnazione del ruolo per un'entità di servizio in un ambito delle risorse, puoi utilizzare lo strumento a riga di comando di Azure. Devi disporre dell'autorizzazione Microsoft.Authorization/roleAssignments/write affinché l'account di archiviazione conceda ruoli.

Per assegnare un ruolo, ad esempio Collaboratore dati BLOB di archiviazione, all'entità servizio, esegui il 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

Sostituisci quanto segue:

  • SP_ID: l'ID entità servizio. Questa entità di servizio è per l'applicazione che hai creato. Per ottenere l'entità servizio per una connessione federata, vedi Oggetto entità servizio.
  • STORAGE_ACCOUNT_NAME: il nome dell'account di archiviazione.
  • RESOURCE_GROUP_NAME: nome del gruppo di risorse.
  • SUBSCRIPTION_ID: l'ID abbonamento.

Per maggiori informazioni, consulta Assegnare ruoli Azure utilizzando l'interfaccia a riga di comando di Azure.

API REST Microsoft

Per aggiungere assegnazioni dei ruoli per un'entità servizio, puoi inviare una richiesta HTTP a Microsoft Management.

Per chiamare l'API REST Microsoft Graph, recupera un token OAuth per un'applicazione. Per maggiori informazioni, vedi Ottenere l'accesso senza un utente. L'applicazione che ha chiamato l'API REST Microsoft Graph deve avere l'autorizzazione dell'applicazione Application.ReadWrite.All.

Per generare un token OAuth, esegui questo comando:

  export TOKEN=$(curl -X POST \
    http://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=http://graph.microsoft.com/" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET" \
  | jq --raw-output '.access_token')

Sostituisci quanto segue:

  • TENANT_ID: l'ID tenant corrispondente all'ID della directory Azure che contiene l'account Archiviazione di Azure.
  • CLIENT_ID: l'ID client Azure.
  • CLIENT_SECRET: il client secret di Azure.

Recupera l'ID dei ruoli integrati di Azure da assegnare all'entità servizio.

Ecco alcuni ruoli comuni:

Per assegnare un ruolo all'entità servizio, chiama l'API REST Microsoft Graph all'API REST Azure Resource Management:

  export ROLE_ASSIGNMENT_ID=$(uuidgen)
  curl -X PUT \
'http://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"
        }
    }'

Sostituisci quanto segue:

  • ROLE_ASSIGNMENT_ID: l'ID del ruolo.
  • SP_ID: l'ID entità servizio. Questa entità di servizio è per l'applicazione che hai creato. Per ottenere l'entità servizio per una connessione federata, vedi Oggetto entità servizio.
  • SUBSCRIPTION_ID: l'ID abbonamento.
  • RESOURCE_GROUP_NAME: nome del gruppo di risorse.
  • STORAGE_ACCOUNT_NAME: il nome dell'account di archiviazione.
  • SUBSCRIPTION_ID: l'ID abbonamento.

La connessione è ora pronta per l'uso. Tuttavia, potrebbe verificarsi un ritardo nella propagazione dell'assegnazione di un ruolo in Azure. Se non riesci a utilizzare la connessione a causa di problemi di autorizzazione, riprova più tardi.

Utilizza un'identità non federata

Per accedere ai dati utilizzando un'identità non federata, segui questi passaggi:

  1. Crea la connessione Azure su BigQuery.
  2. Crea un'entità di servizio Azure AD.
  3. Assegna un ruolo alle applicazioni Azure AD di BigQuery.

Per maggiori informazioni sull'uso dell'identità non federata per accedere ai dati in Azure, vedi Applicazione Azure AD.

Crea una connessione

Per connetterti a Blob Storage, utilizza la console Google Cloud o lo strumento a riga di comando bq:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel menu Aggiungi dati di , seleziona Origine dati esterna.

  3. Nel riquadro Origine dati esterna, inserisci le seguenti informazioni:

    • Per Tipo di connessione, seleziona BigLake su Azure (tramite BigQuery Omni).
    • In ID connessione, inserisci un identificatore per la risorsa di connessione. Puoi utilizzare lettere, numeri, trattini e trattini bassi.
    • Seleziona la località in cui vuoi creare la connessione.
    • (Facoltativo) Per Nome semplice, inserisci un nome semplice per la connessione, ad esempio My connection resource. Il nome descrittivo può essere qualsiasi valore che ti aiuti a identificare la risorsa di connessione se dovrai modificarla in un secondo momento.
    • (Facoltativo) In Descrizione, inserisci una descrizione per la risorsa di connessione.
    • In ID tenant Azure, inserisci l'ID tenant Azure, indicato anche come ID directory (tenant).

  4. Fai clic su Crea connessione.

  5. Fai clic su Vai alla connessione.

  6. Nella sezione Informazioni sulla connessione, prendi nota dei valori di ID app Azure e Nome app Azure. Questi valori sono obbligatori quando assegni un ruolo all'applicazione Azure di 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
    }
  }

Sostituisci TENANT_ID con l'ID tenant della directory Azure che contiene l'account di archiviazione BLOB.

bq

Usa il comando bq mk. Per ottenere l'output in formato JSON, utilizza il parametro --format=json.

bq mk --connection --connection_type='Azure' \
  --tenant_id=TENANT_ID \
  --location=AZURE_LOCATION \
  CONNECTION_ID

Sostituisci quanto segue:

  • TENANT_ID: l'ID tenant della directory Azure che contiene l'account Archiviazione di Azure.
  • AZURE_LOCATION: la regione Azure in cui si trovano i tuoi dati di Archiviazione di Azure. BigQuery Omni supporta l'area geografica azure-eastus2.
  • CONNECTION_ID: l'ID della connessione.

L'output è simile al seguente:

  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.

Questo output include i seguenti valori:

  • APP_ID: l'ID dell'applicazione che hai creato.
  • APP_NAME: il nome dell'app a cui devi assegnare i ruoli, in modo che BigQuery possa accedere ai tuoi dati di Azure.

Prendi nota dei valori APP_ID e APP_NAME da utilizzare nei passaggi successivi.

Per ulteriori informazioni, vedi Creare una connessione.

Crea un'entità di servizio Azure AD

Per creare un'entità di servizio Azure AD, utilizza la console Google Cloud, Azure PowerShell, lo strumento a riga di comando di Azure o l'API REST Microsoft Graph:

Console

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, fai clic sul collegamento che hai creato.

  3. Nel riquadro Informazioni sulla connessione, fai clic su Accedi all'account Azure.

  4. Accedi al tuo account Azure.

  5. Nella pagina Autorizzazioni richieste, fai clic su Accetta.

Terraform

Aggiungi quanto segue al file di configurazione 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

Per creare l'entità servizio per l'ID app APP_ID restituito in precedenza, l'utente deve disporre dell'autorizzazione Microsoft.directory/servicePrincipals/create.

Per creare l'entità servizio, esegui il comando New-AzADServicePrincipal:

New-AzADServicePrincipal`
-ApplicationId APP_ID`
-SkipAssignment

Sostituisci APP_ID con l'ID app restituito in precedenza.

Interfaccia a riga di comando di Azure

Per creare l'entità servizio per l'ID app APP_ID restituita in precedenza, puoi utilizzare lo strumento a riga di comando di Azure. Per creare un'entità servizio, devi disporre dell'autorizzazione Microsoft.directory/servicePrincipals/create.

Per creare l'entità servizio, esegui il comando az ad sp:

export SP_ID=$(az ad sp create --id APP_ID | jq --raw-output '.objectId')

Sostituisci APP_ID con l'ID app restituito in precedenza.

API REST Microsoft

Per creare l'entità servizio per l'ID app APP_ID restituita in precedenza, puoi inviare una richiesta HTTP all'API REST Microsoft Graph.

Per chiamare l'API REST Microsoft Graph, recupera un token OAuth per un'applicazione. Per maggiori informazioni, vedi Ottenere l'accesso senza un utente. L'applicazione utilizzata per chiamare l'API REST Microsoft Graph deve avere l'autorizzazione dell'applicazione Application.ReadWrite.All.

TENANT_ID deve corrispondere all'ID della directory Azure che contiene l'account Archiviazione di Azure.

Per generare un token OAuth, esegui questo comando:

export TOKEN=$(curl -X POST \
http://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=http://graph.microsoft.com/" \
--data-urlencode "client_id=CLIENT_ID" \
--data-urlencode "client_secret=CLIENT_SECRET" \
| jq --raw-output '.access_token')

Sostituisci quanto segue:

  • TENANT_ID: l'ID tenant della directory Azure che contiene l'account Archiviazione di Azure.
  • CLIENT_ID: l'ID client Azure.
  • CLIENT_SECRET: il client secret di Azure.

Esegui questo comando:

export APP_ID=APP_ID

Sostituisci APP_ID con l'ID app che è stato restituito.

Per creare un'entità servizio chiamando l'API REST Microsoft Graph, esegui questo comando:

export SP_ID=$(curl -X POST \
http://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')

Sostituisci quanto segue:

  • TOKEN: il token OAuth per l'applicazione.
  • APP_ID: l'ID app restituito in precedenza.

Assegna un ruolo alle applicazioni Azure AD di BigQuery

Portale Azure

Puoi eseguire assegnazioni dei ruoli nel portale Azure accedendo come utente con l'autorizzazione Microsoft.Authorization/roleAssignments/write. L'assegnazione del ruolo consente alla connessione Azure di BigQuery di accedere ai dati di Archiviazione Azure come specificato nel criterio dei ruoli.

Per aggiungere assegnazioni dei ruoli utilizzando il portale Azure, segui questi passaggi:

  1. Dal tuo account Archiviazione di Azure, inserisci IAM nella barra di ricerca.

  2. Fai clic su Controllo degli accessi (IAM).

  3. Fai clic su Aggiungi e seleziona Aggiungi assegnazioni ruoli.

  4. Per fornire l'accesso di sola lettura, seleziona il ruolo Lettore dati BLOB di archiviazione. Per fornire l'accesso in lettura/scrittura, seleziona il ruolo Collaboratore dati BLOB di archiviazione.

  5. Imposta Assegna accesso a su Utente, gruppo o entità servizio.

  6. Fai clic su Seleziona membri.

  7. Nel campo Seleziona, inserisci il nome dell'app Azure che hai restituito quando hai creato la connessione Azure Azure.

  8. Fai clic su Salva.

Per maggiori informazioni, consulta Assegnare ruoli Azure utilizzando il portale Azure.

Terraform

Aggiungi quanto segue al file di configurazione 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

Per aggiungere un'assegnazione del ruolo per un'entità di servizio in un ambito delle risorse, puoi utilizzare il comando New-AzRoleAssignment:

  New-AzRoleAssignment`
   -SignInName APP_NAME`
   -RoleDefinitionName ROLE_NAME`
   -ResourceName RESOURCE_NAME`
   -ResourceType RESOURCE_TYPE`
   -ParentResource PARENT_RESOURCE`
   -ResourceGroupName RESOURCE_GROUP_NAME

Sostituisci quanto segue:

  • APP_NAME: il nome dell'applicazione.
  • ROLE_NAME: il nome del ruolo che vuoi assegnare.
  • RESOURCE_NAME: il nome della risorsa.
  • RESOURCE_TYPE: tipo di risorsa.
  • PARENT_RESOURCE: la risorsa padre.
  • RESOURCE_GROUP_NAME: nome del gruppo di risorse.

Per ulteriori informazioni sull'utilizzo di Azure PowerShell per aggiungere una nuova entità di servizio, consulta Assegnare ruoli di Azure utilizzando Azure PowerShell.

Interfaccia a riga di comando di Azure

Per aggiungere un'assegnazione del ruolo per un'entità di servizio in un ambito delle risorse, puoi utilizzare lo strumento a riga di comando di Azure. Devi disporre dell'autorizzazione Microsoft.Authorization/roleAssignments/write affinché l'account di archiviazione conceda ruoli.

Per assegnare un ruolo, ad esempio Collaboratore dati BLOB di archiviazione, all'entità servizio, esegui il 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

Sostituisci quanto segue:

  • SP_ID: l'ID entità servizio.
  • STORAGE_ACCOUNT_NAME: il nome dell'account di archiviazione.
  • RESOURCE_GROUP_NAME: nome del gruppo di risorse.
  • SUBSCRIPTION_ID: l'ID abbonamento.

Per maggiori informazioni, consulta Assegnare ruoli Azure utilizzando l'interfaccia a riga di comando di Azure.

API REST Microsoft

Per aggiungere assegnazioni dei ruoli per un'entità servizio, puoi inviare una richiesta HTTP a Microsoft Management.

Per chiamare l'API REST Microsoft Graph, recupera un token OAuth per un'applicazione. Per maggiori informazioni, vedi Ottenere l'accesso senza un utente. L'applicazione che ha chiamato l'API REST Microsoft Graph deve avere l'autorizzazione dell'applicazione Application.ReadWrite.All.

Per generare un token OAuth, esegui questo comando:

  export TOKEN=$(curl -X POST \
    http://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=http://graph.microsoft.com/" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET" \
  | jq --raw-output '.access_token')

Sostituisci quanto segue:

  • TENANT_ID: l'ID tenant corrispondente all'ID della directory Azure che contiene l'account Archiviazione di Azure.
  • CLIENT_ID: l'ID client Azure.
  • CLIENT_SECRET: il client secret di Azure.

Recupera l'ID dei ruoli integrati di Azure da assegnare all'entità servizio.

Ecco alcuni ruoli comuni:

Per assegnare un ruolo all'entità servizio, chiama l'API REST Microsoft Graph all'API REST Azure Resource Management:

  export ROLE_ASSIGNMENT_ID=$(uuidgen)
  curl -X PUT \
'http://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"
        }
    }'

Sostituisci quanto segue:

  • ROLE_ASSIGNMENT_ID: l'ID del ruolo.
  • SP_ID: l'ID entità servizio.
  • SUBSCRIPTION_ID: l'ID abbonamento.
  • RESOURCE_GROUP_NAME: nome del gruppo di risorse.
  • STORAGE_ACCOUNT_NAME: il nome dell'account di archiviazione.
  • SUBSCRIPTION_ID: l'ID abbonamento.

La connessione è ora pronta per l'uso. Tuttavia, potrebbe verificarsi un ritardo nella propagazione dell'assegnazione di un ruolo in Azure. Se non riesci a utilizzare la connessione a causa di problemi di autorizzazione, riprova più tardi.

Condividere le connessioni con gli utenti

Puoi concedere i ruoli seguenti per consentire agli utenti di eseguire query sui dati e gestire le connessioni:

  • roles/bigquery.connectionUser: consente agli utenti di utilizzare le connessioni per connettersi con origini dati esterne ed eseguire query su queste.

  • roles/bigquery.connectionAdmin: consente agli utenti di gestire le connessioni.

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi Ruoli e autorizzazioni predefiniti.

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto, in un gruppo chiamato Connessioni esterne.

  2. Nel riquadro Explorer, fai clic sul nome del tuo progetto > Connessioni esterne > Connessione.

  3. Nel riquadro Dettagli, fai clic su Condividi per condividere una connessione. Quindi:

    1. Nella finestra di dialogo Autorizzazioni di connessione, condividi la connessione con altre entità aggiungendo o modificando entità.

    2. Fai clic su Salva.

bq

Non puoi condividere una connessione con lo strumento a riga di comando bq. Per condividere una connessione, utilizza la console Google Cloud o il metodo dell'API BigQuery Connections per condividere una connessione.

API

Utilizza il metodo projects.locations.connections.setIAM nella sezione di riferimento dell'API REST di BigQuery Connections e fornisci un'istanza della risorsa policy.

Java

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di BigQuery.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:[email protected]")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

Passaggi successivi