Configurar o acesso a uma fonte: armazenamento do Microsoft Azure

É possível configurar o acesso aos dados de origem no Armazenamento do Microsoft Azure usando assinaturas de acesso compartilhado (SAS, na sigla em inglês).

Regiões com suporte

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

Configurar acesso

Siga estas etapas para configurar o acesso a um contêiner do Microsoft Azure Storage:

  1. 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.

  2. Crie um token SAS no nível do contêiner. Consulte Conceder acesso limitado aos recursos do Azure Storage usando assinaturas de acesso compartilhado para instruções.

    1. Os serviços permitidos precisam incluir o Blob.

    2. Em Tipos de recursos permitidos, selecione Contêiner e Objeto.

    3. 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.

    4. 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.

    5. 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.

    6. Os protocolos permitidos precisam ser somente HTTPS.

  3. 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.

Salve suas credenciais da Microsoft no Secret Manager

O Secret Manager é um serviço seguro que armazena e gerencia dados sensíveis, como senhas. Ele usa controle de acesso baseado em papéis, geração de registros de auditoria e criptografia forte para proteger os secrets.

O Serviço de transferência do Cloud Storage pode usar o Secret Manager para proteger suas credenciais do Azure. O Serviço de transferência do Cloud Storage oferece suporte a tokens de assinatura de acesso compartilhado (SAS, na sigla em inglês) e chaves compartilhadas do Azure no Secret Manager.

Quando você especifica uma chave compartilhada, o Serviço de transferência do Cloud Storage usa essa chave para gerar uma SAS de serviço restrita no escopo ao contêiner do Azure especificado no job de transferência.

Ativar a API

Ative a API Secret Manager.

Ative a 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

  1. Siga as instruções para recuperar seu e-mail do agente de serviço.

  2. Acesse a página IAM no Console do Google Cloud.

    Acessar IAM

  3. Clique em Conceder acesso.

  4. Na caixa de texto Novos principais, digite o e-mail do agente de serviço.

  5. No menu suspenso Selecionar um papel, pesquise e selecione Acessador de secrets do Secret Manager.

  6. Clique em Salvar.

gcloud

Use o comando gcloud projects add-iam-policy-binding para adicionar o papel do IAM ao agente de serviço.

  1. Siga as instruções para recuperar seu e-mail do agente de serviço.

  2. 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

  1. Acesse a página do Secret Manager no console do Google Cloud:

    Acessar o Secret Manager

  2. Clique em Criar secret.

  3. Insira um nome.

  4. Na caixa de texto Valor do secret, insira suas credenciais em um dos formatos a seguir.

    {
      "sas_token" : "SAS_TOKEN_VALUE"
    }
    

    Ou:

    {
      "access_key" : "ACCESS_KEY"
    }
    
  5. Clique em Criar secret.

  6. Depois de criar o secret, anote o nome completo do recurso do secret:

    1. Selecione a guia Visão geral.

    2. Copie o valor de ID 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_SOURCE_NAME",
      "container": "AZURE_CONTAINER",
      "credentialsSecret": "SECRET_RESOURCE_ID",
    },
    "gcsDataSink": {
      "bucketName": "CLOUD_STORAGE_BUCKET_NAME"
    }
  }
}

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.