Connettiti all'archiviazione BLOB

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

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

  • Utilizza un'identità federata Azure. Questo è l'approccio consigliato. BigQuery Omni supporta l'identità dei carichi di lavoro di Azure dell'AI. 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 all'interno del tenant. Confederato l'accesso all'identità è più sicuro rispetto all'accesso non federato perché esistente all'interno del tenant di Azure. L'interfaccia utente del client i secret non sono gestiti da te o da Google.

    Con la federazione delle identità hai un maggiore controllo sull'applicazione esiste un'applicazione a cui hai concesso l'accesso ai tuoi dati 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 all'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 Azure Active Directory (Azure AD) univoca. applicazione. Le autorizzazioni vengono concesse alle applicazioni tramite identità e accesso di Azure Ruoli di gestione (IAM). I ruoli IAM Azure concessi determinano i dati BigQuery può accedere per ogni connessione.

Dopo aver creato una connessione BigQuery Azure, puoi eseguire una query sul Dati di Archiviazione BLOB oppure esportare i risultati delle 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 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 la ruoli o altri ruoli predefiniti ruoli.

  • Assicurati di disporre delle seguenti autorizzazioni IAM Azure per il 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'uso 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 Nuovo registrazione.

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

  3. Per Tipi di account supportati, seleziona Account in questa organizzazione della directory di amministrazione.

  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. Nella finestra Aggiungi dati 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 connessione. risorsa. Puoi utilizzare lettere, numeri, trattini e trattini bassi.
    • Seleziona la località in cui vuoi creare la connessione.
    • (Facoltativo) In 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 dovrai modificarlo in seguito.
    • (Facoltativo) Per Descrizione, inserisci una descrizione per risorsa di connessione.
    • Per ID tenant Azure, inserisci l'ID tenant Azure, che è anche chiamato ID directory (tenant).
    • Seleziona la casella di controllo Usa identità federata e inserisci il valore ID applicazione federata Azure (client).

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

  4. Fai clic su Crea connessione.

  5. Fai clic su Vai alla connessione.

  6. Nella sezione Informazioni sulla connessione, tieni presente che Il valore dell'identità Google BigQuery, ovvero l'ID account di servizio. Questo ID è per 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 di Azure che contiene l'account Archiviazione BLOB.

bq

Usa il comando bq mk. A 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 in cui si trovano i dati di Archiviazione di Azure. BigQuery Omni supporta regione azure-eastus2.
  • APP_ID: l'ID applicazione Azure (client). A per informazioni su come ottenere questo ID, consulta Creare un'applicazione nel tenant di 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 è stato creato.

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

Prendi nota di APP_ID e SUBJECT_ID da usare 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 un'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 https://accounts.google.com.

    3. In Identificatore oggetto, inserisci l'identità Google BigQuery di all'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                = "https://accounts.google.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 Portale Azure, Azure PowerShell o l'API REST Microsoft Management:

Portale Azure

Puoi eseguire assegnazioni dei ruoli nel portale Azure accedendo come utente con l'autorizzazione Microsoft.Authorization/roleAssignments/write. Il ruolo consente alla connessione BigQuery Azure di accedere Dati di Archiviazione di 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 la casella Dati BLOB di archiviazione Collaboratore.

  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 che hai fornito quando hai creato l'applicazione nel tenant di Azure.

  8. Fai clic su Salva.

Per ulteriori informazioni, consulta Assegnare ruoli Azure utilizzando portale.

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: Usa 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 un nuovo servizio vedi 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: lo strumento a riga di comando di Azure. Devi disporre dei Autorizzazione Microsoft.Authorization/roleAssignments/write per l'archiviazione per concedere i ruoli.

Per assegnare un ruolo, ad esempio il ruolo Collaboratore dati BLOB di archiviazione, alla service principal, 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. Questo servizio relativo all'applicazione che hai creato. Per ottenere l'entità servizio per una connessione federata, vedi 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 a Microsoft Management.

Per chiamare l'API REST Microsoft Graph, recuperare un token OAuth per un'applicazione. Per ulteriori informazioni, consulta la sezione Come ottenere 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 \
    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')

Sostituisci quanto segue:

  • TENANT_ID: l'ID tenant corrispondente all'ID del 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 di Microsoft Graph all'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"
        }
    }'

Sostituisci quanto segue:

  • ROLE_ASSIGNMENT_ID: l'ID del ruolo.
  • SP_ID: l'ID entità servizio. Questo servizio relativo all'applicazione che hai creato. Per ottenere l'entità servizio per una connessione federata, consulta Servizio dell'oggetto entità.
  • 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 per un'assegnazione del ruolo in Azure. Se non riesci a utilizzare la connessione a causa di sui 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 saperne di più sull'uso di identità non federate per accedere ai dati in Azure, consulta 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. Nella finestra Aggiungi dati 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 connessione. risorsa. Puoi utilizzare lettere, numeri, trattini e trattini bassi.
    • Seleziona la località in cui vuoi creare la connessione.
    • (Facoltativo) In 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 dovrai modificarlo in seguito.
    • (Facoltativo) Per Descrizione, inserisci una descrizione per risorsa di connessione.
    • Per ID tenant Azure, inserisci l'ID tenant Azure, che è anche chiamato 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 Azure ID app e Nome app Azure. Questi sono obbligatori quando assegni un ruolo al nell'applicazione Azure.

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 di Azure che contiene l'account Archiviazione BLOB.

bq

Usa il comando bq mk. A 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 in cui si trovano i dati di Archiviazione di Azure. BigQuery Omni supporta regione 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 è stato creato.
  • APP_NAME: il nome dell'app che devi e assegnare ruoli affinché BigQuery possa accedere ai dati di Azure.

Prendi nota di APP_ID e APP_NAME da usare 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, usa la console Google Cloud, Azure PowerShell, lo strumento a riga di comando di Azure o l'API REST di 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 avere 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 che è stato restituito in precedenza.

Interfaccia a riga di comando di Azure

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

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

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

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

API REST Microsoft

Per creare l'entità servizio per l'ID app APP_ID restituito in precedenza, puoi inviare una richiesta HTTP all'interfaccia l'API REST del grafico.

Per chiamare l'API REST Microsoft Graph, recuperare un token OAuth per un'applicazione. Per ulteriori informazioni, consulta la sezione Come ottenere senza un utente. L'applicazione utilizzata per chiamare l'API REST Microsoft Graph deve avere l'elemento Application.ReadWrite.All autorizzazione dell'applicazione.

TENANT_ID deve corrispondere all'ID della directory Azure che contiene la risorsa Archiviazione di Azure.

Per generare un token OAuth, esegui questo 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')

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 \
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')

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. Il ruolo consente alla connessione BigQuery Azure di accedere Dati di Archiviazione di 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 la casella Dati BLOB di archiviazione Collaboratore.

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

  6. Fai clic su Seleziona membri.

  7. Nel campo Seleziona, inserisci Nome dell'app Azure che è stato restituito al momento della creazione del Connessione Azure su BigQuery.

  8. Fai clic su Salva.

Per ulteriori informazioni, consulta Assegnare ruoli Azure utilizzando portale.

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: Usa 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 un nuovo servizio vedi 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: lo strumento a riga di comando di Azure. Devi disporre dei Autorizzazione Microsoft.Authorization/roleAssignments/write per l'archiviazione per concedere i ruoli.

Per assegnare un ruolo, ad esempio il ruolo Collaboratore dati BLOB di archiviazione, alla service principal, 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 a Microsoft Management.

Per chiamare l'API REST Microsoft Graph, recuperare un token OAuth per un'applicazione. Per ulteriori informazioni, consulta la sezione Come ottenere 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 \
    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')

Sostituisci quanto segue:

  • TENANT_ID: l'ID tenant corrispondente all'ID del 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 di Microsoft Graph all'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"
        }
    }'

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 per un'assegnazione del ruolo in Azure. Se non riesci a utilizzare la connessione a causa di sui 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 di esse.

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

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

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto, in un gruppo denominato 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 il connessione con altre entità aggiungendo o modificando tra cui scegliere.

    2. Fai clic su Salva.

bq

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

API

Utilizza la Metodo projects.locations.connections.setIAM nella sezione di riferimento dell'API REST di BigQuery Connections, fornisce un'istanza della risorsa policy.

Java

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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:example-analyst-group@google.com")
              .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