Antes de transferir dados de um bucket do Azure Storage, você precisa configurar o acesso a ele para que o Serviço de transferência do Cloud Storage possa recuperar os objetos.
O Serviço de transferência do Cloud Storage é compatível com os seguintes métodos de autenticação do Azure:
Assinatura de acesso compartilhado (SAS). Os tokens SAS podem ser especificados diretamente ao criar uma transferência job ou podem ser armazenados no Secret Manager.
Chaves compartilhadas do Azure podem ser armazenados no Secret Manager e o secret transmitido ao criar um job de transferência.
As credenciais federadas são transmitidas em um objeto
federatedIdentityConfig
durante a criação do job de transferência.
Este documento também inclui informações sobre como adicionar o IP do worker do Serviço de transferência do Cloud Storage de acesso ao firewall do Armazenamento do Azure para permitir o acesso. Consulte Restrições de IP para mais detalhes.
Regiões compatíveis
O Serviço de transferência do Cloud Storage pode transferir dados das seguintes regiões do Armazenamento do Microsoft Azure:- Américas: Leste dos EUA, Leste dos EUA 2, Oeste dos EUA, Oeste dos EUA US 2, Oeste dos EUA 3, Região central dos EUA, Região central norte dos EUA, Região central sul dos EUA, Região central oeste dos EUA, Região central do Canadá, Região leste do Canadá e Sul do Brasil
- Ásia-Pacífico: Região central da Austrália, Leste da Austrália, Sudeste da Austrália, Região central da Índia, Sul da Índia, Oeste da Índia, Sudeste da Ásia, Leste da Ásia, Leste do Japão, Oeste do Japão, Sul da Coreia e Região central da Coreia do Sul
- Europa, Oriente Médio, África (EMEA): Região central da França, Centro Ocidental da Alemanha, Noruega, Leste da Suécia, Norte da Suíça, Norte da Europa, Europa Ocidental, Reino Unido do Sul, Oeste do Reino Unido, Centro do Catar, Norte dos Emirados Árabes Unidos, Norte da África do Sul
Opção 1: autenticar usando um token SAS
Siga estas etapas para configurar o acesso a um contêiner do Armazenamento do Microsoft Azure usando um token SAS. Você também pode salvar seu token SAS no Secret Manager para fazer isso, siga as instruções Faça a autenticação usando uma chave compartilhada do Azure ou um token SAS no Secret Manager.
Crie ou use um usuário atual do Microsoft Azure Storage para acessar a conta de armazenamento do seu contêiner de Blobs do Microsoft Azure Storage.
Crie um token SAS no nível do contêiner. Para mais instruções, consulte Conceder acesso limitado aos recursos do Azure Storage usando assinaturas de acesso compartilhado.
Os serviços permitidos precisam incluir o Blob.
Em Tipos de recursos permitidos, selecione Contêiner e Objeto.
As Permissões autorizadas precisam incluir Leitura e Lista. Se a transferência estiver configurada para excluir objetos da origem, você também vai precisar adicionar a permissão Excluir.
O prazo de validade padrão para os tokens SAS é oito horas. Defina um prazo de validade razoável que permita a conclusão da transferência.
Não especifique endereços IP no campo Endereços IP permitidos. O Serviço de transferência do Cloud Storage usa vários endereços IP e não é compatível com a restrição de endereço IP.
Os protocolos permitidos precisam ser somente HTTPS.
Quando o token for criado, anote o valor retornado do token SAS. Você precisa deste valor para configurar a transferência com o Serviço de transferência do Cloud Storage.
Opção 2: autenticar usando uma chave compartilhada do Azure ou um token SAS no Secret Manager
O Secret Manager é um serviço seguro que armazena e gerencia dados sensíveis, como senhas. Ele usa criptografia forte, controle de acesso baseado em papéis e geração de registros de auditoria para proteger seus segredos.
O Serviço de transferência do Cloud Storage oferece suporte aos nomes de recursos do Secret Manager as credenciais do Azure armazenadas com segurança.
Para usar uma chave compartilhada do Azure, salve a chave em com o Secret Manager. Os tokens SAS podem ser salvos no Secret Manager ou transmitidos diretamente.
Quando você especifica uma chave compartilhada, o Storage Transfer Service usa essa chave para gerar um SAS de serviço restrito ao escopo do contêiner do Azure especificado no job de transferência.
Ativar a API
Enable the Secret Manager API.
Configurar outras permissões
Permissões do usuário
O usuário que cria o secret requer o seguinte papel:
- Administrador do Secret Manager (
roles/secretmanager.admin
)
Saiba como conceder um papel.
Permissões do agente de serviço
O agente de serviço do Serviço de transferência do Cloud Storage requer o seguinte papel do IAM:
- Acessador de secrets do Secret Manager (
roles/secretmanager.secretAccessor
)
Para conceder o papel ao agente de serviço:
console do Cloud
Siga as instruções para recuperar seu e-mail do agente de serviço.
Acesse a página IAM no Console do Google Cloud.
Clique em Conceder acesso.
Na caixa de texto Novos principais, digite o e-mail do agente de serviço.
No menu suspenso Selecionar um papel, pesquise e selecione Acessador de secrets do Secret Manager.
Clique em Save.
gcloud
Use o comando gcloud projects add-iam-policy-binding
para adicionar o papel do IAM ao agente de serviço.
Siga as instruções para recuperar seu e-mail do agente de serviço.
Na linha de comando, insira o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Criar um secret
Crie um secret com o Secret Manager:
console do Cloud
Acesse a página do Secret Manager no console do Google Cloud:
Clique em Criar secret.
Insira um nome.
Na caixa de texto Valor do secret, insira suas credenciais em um dos formatos abaixo.
{ "sas_token" : "SAS_TOKEN_VALUE" }
Ou:
{ "access_key" : "ACCESS_KEY" }
Clique em Criar secret.
Depois de criar o secret, anote o nome completo do recurso do secret:
Selecione a guia Visão geral.
Copie o valor de Nome do recurso. Ele usa o seguinte formato:
projects/1234567890/secrets/SECRET_NAME
gcloud
Para criar um novo secret usando a ferramenta de linha de comando gcloud, transmita as credenciais formatadas como JSON para o comando gcloud secrets create
:
printf '{
"sas_token" : "SAS_TOKEN_VALUE"
}' | gcloud secrets create SECRET_NAME --data-file=-
Ou:
printf '{
"access_key" : "ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Recupere o nome completo do recurso do secret:
gcloud secrets describe SECRET_NAME
Anote o valor de name
na resposta. Ele usa o seguinte formato:
projects/1234567890/secrets/SECRET_NAME
Para mais detalhes sobre como criar e gerenciar secrets, consulte a documentação do Secret Manager.
Transmitir seu secret para o comando de criação de job
Para usar o Secret Manager com o Serviço de transferência do Cloud Storage, é necessário usar a API REST a fim de criar um job de transferência.
Transmita o nome do recurso do Secret Manager igual ao valor do campo transferSpec.azureBlobStorageDataSource.credentialsSecret
:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Consulte Criar transferências para saber mais.
Opção 3: autenticação usando a identidade federada
O Storage Transfer Service oferece suporte à federação de identidade da carga de trabalho do Azure com o Google Cloud. O Serviço de transferência do Cloud Storage pode emitir solicitações para o Azure Storage por meio de aplicativos do Azure registrados, eliminando a necessidade de transmitir credenciais diretamente para o Serviço de transferência do Cloud Storage.
Para configurar a identidade federada, siga estas instruções.
Configurar credenciais do Google Cloud
Adicione o criador de tokens da conta de serviço.
(roles/iam.serviceAccountTokenCreator
) para o Serviço de transferência do Cloud Storage
agente de serviço para permitir a criação de tokens de ID do OpenID Connect (OIDC) para o
do Compute Engine.
Extraia o
accountEmail
e osubjectId
do agente de serviço gerenciado pelo Google que é criado automaticamente quando você começa a usar o Serviço de transferência do Cloud Storage. Para recuperar esses valores:Acesse a página de referência de
googleServiceAccounts.get
.Você verá um painel interativo com o título Testar este método.
No painel, em Parâmetros de solicitação, insira o ID do projeto. O projeto especificado aqui precisa ser o que você está usando para gerenciar o Serviço de transferência do Cloud Storage.
Clique em Executar. O
accountEmail
e osubjectId
são incluídos na resposta. Salve esses valores.
Conceda ao criador de token de conta de serviço (
roles/iam.serviceAccountTokenCreator
) para o Serviço de transferência do Cloud Storage agente de serviço. Siga as instruções em Gerenciar o acesso a contas de serviço.
Configurar credenciais da Microsoft
Primeiro, registre um aplicativo e adicione uma credencial federada:
- Faça login em https://portal.azure.com.
- Acesse a página Registro de aplicativos.
- Clique em New registration.
- Insira um nome. Por exemplo,
azure-transfer-app
- Selecione Somente contas neste diretório organizacional.
- Clique em Registrar. O aplicativo é criado. Observe o
Application (client) ID
e oDirectory (tenant) ID
. Você também pode recuperá-las mais tarde na página Visão geral do aplicativo. - Clique em Certificados e secrets e selecione a opção Federated credentials .
- Clique em Adicionar credencial.
- Selecione Outro emissor como cenário e insira as seguintes informações:
- Emissor:
https://accounts.google.com
- Identificador do assunto: o
subjectId
do seu agente de serviço, que você recuperado em Configurar credenciais do Google Cloud. - Um nome exclusivo para a credencial federada.
- O público-alvo precisa permanecer como
api://AzureADTokenExchange
.
- Emissor:
- Clique em Adicionar.
Em seguida, conceda ao aplicativo acesso ao contêiner do Azure Storage:
- Acesse a página Contas de armazenamento na sua conta do Azure.
- Escolha sua conta de armazenamento e escolha Contêineres no Seção Armazenamento de dados.
- Clique no bucket para conceder acesso.
- Clique em Controle de acesso (IAM) no menu à esquerda e selecione a guia Papéis.
- Clique no menu flutuante (
...
) ao lado de qualquer função e selecione Clonar. - Insira um nome para essa função personalizada e selecione Começar do zero. Clique em Avançar.
- Clique em Adicionar permissões e pesquise
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
. - Clique no card Armazenamento da Microsoft que aparece.
- Selecione o botão de opção Ações de dados.
- Selecione Read : Read Blob.
- Clique em Adicionar.
- Para excluir objetos na origem após a transferência, clique em
Adicione permissões novamente e pesquise
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
- Clique no card Microsoft Storage que aparece, selecione Ações de dados e Excluir: Excluir blob.
- Clique em Adicionar.
- Clique em Revisar + criar e em Criar. Você vai retornar à página Controle de acesso (IAM) do bucket.
- Clique em Adicionar e selecione Adicionar atribuição de função.
- Na lista de papéis, selecione o papel personalizado e clique em Próxima.
- Clique em Selecionar participantes.
- No campo Selecionar, insira o nome do aplicativo que você
registrou anteriormente. Por exemplo,
azure-transfer-app
. - Clique no bloco do aplicativo e em Selecionar.
- Clique em Revisar + atribuir.
Transmitir os identificadores do aplicativo para o comando de criação de job
Os identificadores do seu aplicativo são transmitidos para o comando de criação de job usando um
objeto federatedIdentityConfig
. Copie o ID do aplicativo (cliente) e o
ID do diretório (tenant) que você salvou durante as etapas de
Configurar credenciais da Microsoft nos campos client_id
e tenant_id
.
"federatedIdentifyConfig": {
"client_id": "efghe9d8-4810-800b-8f964ed4057f",
"tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}
Um exemplo de solicitação de criação de job é semelhante ao seguinte:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Azure Federated Identity",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"federatedIdentifyConfig": {
"client_id": "AZURE_CLIENT_ID",
"tenant_id": "AZURE_TENANT_ID"
}
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Consulte Criar transferências para saber mais.
Restrições de IP
Se você restringir o acesso aos recursos do Azure usando um firewall do Azure Storage, adicione os intervalos de IP usados pelos workers do Serviço de transferência do Cloud Storage à lista de IPs permitidos.
Como esses intervalos de IP podem mudar, publicamos os valores atuais como um arquivo JSON em um endereço permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Quando um novo intervalo é adicionado ao arquivo, aguardamos pelo menos sete dias antes de usá-lo para solicitações do Storage Transfer Service.
Recomendamos que você extraia os dados deste documento pelo menos uma vez por semana para manter a configuração de segurança atualizada. Para uma amostra de script Python que busque intervalos de IP de um arquivo JSON, consulte este artigo da documentação da nuvem privada virtual.
Para adicionar esses intervalos como IPs permitidos, siga as instruções no artigo do Microsoft Azure, Configurar firewalls e redes virtuais do Azure Storage.