Configurar restrições de local de recursos

Cloud Composer 1 | Cloud Composer 2

Nesta página, mostramos como configurar restrições de local de recursos para garantir que os dados armazenados pelo Cloud Composer sejam mantidos nos locais especificados.

Como as restrições de local funcionam

As restrições de local são determinadas com base na política da organização aplicada ao projeto em que o ambiente do Cloud Composer é criado. Essa política é atribuída ao projeto ou é herdada da organização.

Com as restrições de localização ativadas, não é possível criar um ambiente em uma região proibida pela política. Se uma região estiver na lista de proibições ou na lista de permissões, não será possível criar ambientes.

Para permitir a criação de ambientes, a política precisa permitir toda a região, e não uma zona específica. Por exemplo, a região europe-west3 precisa ser permitida pela política para criar ambientes do Cloud Composer nessa região.

O Cloud Composer verifica as restrições de localização em:

  • Criação do ambiente.
  • Upgrade do ambiente, se algum recurso adicional for criado durante a operação.
  • Atualização do ambiente, para ambientes mais antigos que não impõem restrições de localização em dependências do Cloud Composer.

Além de verificar as restrições de local, o Cloud Composer faz o seguinte:

  • O armazenamento de imagens do Airflow personalizadas pelo usuário em repositórios regionais do Artifact Registry.
  • Se a multirregião US for explicitamente proibida pela política, o uso do Cloud Build será desativado. Nesse caso, as imagens do Airflow personalizadas pelo usuário são criadas no cluster do GKE.

Instalar uma dependência do Python em um ambiente de IP particular com restrições de local de recursos

Se você definir restrições de local de recursos para o projeto, o Cloud Build não poderá ser usado para instalar pacotes Python. Como consequência, o acesso direto a repositórios na Internet pública é desativado.

Para instalar dependências do Python em um ambiente de IP privado quando as restrições de local não permitirem a multirregião US, use uma das seguintes opções:

  • Use um repositório PyPI particular hospedado na rede VPC.

  • Use um servidor proxy na rede VPC para se conectar a um repositório PyPI na Internet pública. Especifique o endereço do proxy no arquivo /config/pip/pip.conf do bucket do Cloud Storage.

  • Se a política de segurança permitir acesso à rede VPC a partir de endereços IP externos, configure o Cloud NAT.

  • Armazene as dependências do Python na pasta dags do bucket do Cloud Storage para instalá-las como bibliotecas locais. Essa pode não ser uma boa opção se a árvore de dependência for grande.

Restringir locais para registros do Cloud Composer

Se os registros do Cloud Composer contiverem dados confidenciais, convém redirecionar os registros do Cloud Composer para um bucket regional do Cloud Storage. Para fazer isso, use um coletor de registros. Depois de redirecionar os registros para um bucket do Cloud Storage, seus registros não serão enviados ao Cloud Logging.

gcloud

  1. Crie um novo intervalo no Cloud Storage.

    gsutil mb -l LOCATION gs://BUCKET_NAME
    

    Substitua:

    • LOCATION pela região em que o ambiente está localizado;
    • BUCKET_NAME pelo nome do bucket. Por exemplo, composer-logs-us-central1-example-environment.
  2. Crie um novo coletor de registros.

    gcloud logging sinks create \
    composer-log-sink-ENVIRONMENT_NAME \
    storage.googleapis.com/BUCKET_NAME \
    --log-filter "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    

    Substitua:

    • ENVIRONMENT_NAME pelo nome do ambiente;
    • BUCKET_NAME pelo nome do bucket.
    • LOCATION pela região em que o ambiente está localizado;
  3. A saída do comando anterior contém o número da conta de serviço. Conceda o papel Criador de objetos do Storage a essa conta de serviço:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \
    --role='roles/storage.objectCreator' \
    --condition=None
    

    Substitua:

    • PROJECT_ID pelo ID do projeto.
    • SA_NUMBER pelo número da conta de serviço fornecido pelo comando gcloud logging sinks create na etapa anterior.
  4. Exclua os registros do novo ambiente no Monitoring.

    gcloud logging sinks update _Default \
    --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter=\
    "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    

    Substitua:

    • ENVIRONMENT_NAME pelo nome do ambiente
    • LOCATION pela região em que o ambiente está localizado;

A seguir