VPC 서비스 제어 사용

이 페이지에서는 VPC 서비스 제어를 사용하여 서비스 경계 내에서 Colab Enterprise 노트북을 설정하는 방법을 설명합니다.

개요

VPC 서비스 제어는 데이터 무단 반출을 방지하는 경계를 설정할 수 있는 Google Cloud 기능입니다.

VPC 서비스 제어는 Identity and Access Management (IAM)에서 제공하는 보호와 별개로Google Cloud 서비스의 보안을 강화합니다.

서비스 경계 내에서 Colab Enterprise를 사용하면 런타임에 서비스 경계가 적용됩니다. 따라서 다른 Google API 및 서비스와 상호작용하는 노트북 코드를 실행하려면 이러한 서비스를 서비스 경계에 추가해야 합니다.

VPC 서비스 제어에 대한 자세한 내용은 VPC 서비스 제어 개요를 참고하세요.

제한 사항

필요한 역할

사용자 계정에 Colab Enterprise에서 VPC 서비스 제어를 사용하는 데 필요한 권한이 있는지 확인하려면 관리자에게 사용자 계정에 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 사용자 계정에 필요한 권한을 부여할 수도 있습니다.

VPC 서비스 제어 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

서비스 경계 만들기

  1. VPC 서비스 제어를 사용하여 서비스 경계를 만듭니다. 이 서비스 경계는 사용자가 지정한 서비스의 Google 관리 리소스를 보호합니다. 서비스 경계를 만드는 동안 다음을 수행합니다.

    1. 서비스 경계에 프로젝트를 추가할 때 Colab Enterprise 노트북이 포함된 프로젝트를 추가하거나 이 프로젝트에서 노트북을 만듭니다.

    2. 서비스 경계에 서비스를 추가할 때 다음을 추가합니다.

      • Vertex AI API (aiplatform.googleapis.com)
      • Dataform API (dataform.googleapis.com)

    필요한 프로젝트 및 서비스를 추가하지 않고 서비스 경계를 만들었을 때 서비스 경계를 업데이트하는 방법은 서비스 경계 관리를 참고하세요.

Colab Enterprise UI에 대한 액세스 권한 제공

Colab Enterprise UI (colab-embedded.cloud.google.com)는 인터넷을 통해서만 액세스할 수 있으므로 Colab Enterprise UI는 서비스 경계 외부로 처리됩니다. 서비스 경계를 적용하면 보호된 서비스의 Google Cloud 콘솔 인터페이스가 일부 또는 전체에 액세스할 수 없게 될 수 있습니다. 예를 들어 경계로 Colab Enterprise를 보호하면 Google Cloud 콘솔의 Colab Enterprise 인터페이스에 액세스할 수 없게 됩니다.

Google Cloud 콘솔에서 경계로 보호되는 리소스에 액세스하려면 보호된 API로 Google Cloud 콘솔을 사용하려는 사용자의 머신이 포함된 공개 IP 범위의 액세스 수준을 만들어야 합니다. 예를 들어 비공개 네트워크 NAT 게이트웨이의 공개 IP 범위를 액세스 수준에 추가한 후 이 액세스 수준을 서비스 경계에 할당할 수 있습니다.

경계에 대한 Google Cloud 콘솔 액세스 권한을 특정 사용자 세트로만 제한하려면 사용자도 액세스 수준에 추가하면 됩니다. 이 경우 지정된 사용자만Google Cloud 콘솔에 액세스할 수 있습니다.

VPC 액세스 가능 서비스 설정 (선택사항)

경계에 대한 VPC 액세스 가능 서비스를 사용 설정하면 경계 내부의 네트워크 엔드포인트로부터의 액세스가 지정한 서비스 집합으로 제한됩니다.

경계 내부의 액세스를 특정 서비스 집합으로 제한하는 방법을 자세히 알아보려면 VPC 액세스 가능 서비스를 참고하세요.

VPC 네트워크에서 비공개 Google 액세스 사용 (선택사항)

비공개 Google 액세스에서는 비공개 IP 주소를 사용하여 Google Cloud API 및 서비스에 액세스하는 VPC 네트워크 또는 온프레미스 네트워크에서 호스팅하는 비공개 연결을 제공합니다. VPC 서비스 제어 서비스 경계를 네트워크의 호스트로 확장하면 보호된 리소스에 대한 액세스를 제어할 수 있습니다. VPC 네트워크의 호스트에는 비공개 IP 주소만 있고 공개 IP 주소는 없어야 하며 이 호스트는 비공개 Google 액세스가 사용 설정된 서브넷에 있어야 합니다. 자세한 내용은 온프레미스 네트워크에서 비공개 연결을 참고하세요.

VPC 네트워크에서 비공개 Google 액세스를 사용하려면 일부 DNS 레코드를 구성해야 합니다.

Cloud DNS를 사용하여 DNS 항목 구성

Colab Enterprise 런타임은 VPC 네트워크가 기본적으로 처리하지 않는 여러 도메인을 사용합니다. VPC 네트워크에서 이러한 도메인으로 전송된 요청을 올바르게 처리하도록 하려면 Cloud DNS를 사용하여 DNS 레코드를 추가합니다. VPC 경로에 대한 자세한 내용은 경로를 참고하세요.

이 섹션에서는 도메인의 관리 영역을 만들고 요청을 라우팅할 DNS 항목을 추가한 다음 트랜잭션을 실행하는 방법을 보여줍니다. 요청을 처리해야 하는 *.aiplatform.googleapis.com으로 시작하는 여러 도메인 각각에 이 단계를 반복합니다.

Cloud Shell 또는 Google Cloud CLI가 설치된 환경에서 다음 gcloud CLI 명령어를 입력합니다.

  1. VPC 네트워크에서 처리해야 하는 도메인 중 하나의 비공개 관리 영역을 만들려면 다음을 실행합니다.

        gcloud dns managed-zones create ZONE_NAME \
            --visibility=private \
            --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
            --dns-name=DNS_NAME. \
            --description="Description of your managed zone"
        

    다음을 바꿉니다.

    • ZONE_NAME: 만들 영역의 이름입니다. 도메인마다 별도의 영역을 사용해야 합니다. 이 영역 이름은 다음 각 단계에서 사용됩니다.
    • PROJECT_ID: VPC 네트워크를 호스팅하는 프로젝트의 ID입니다.
    • NETWORK_NAME: 이전에 만든 VPC 네트워크의 이름입니다.
    • DNS_NAME: *. 뒤에 오는 도메인 이름의 일부. 예를 들어 *.aiplatform.googleapis.com의 DNS 이름은 aiplatform.googleapis.com입니다.
  2. 트랜잭션을 시작합니다.

        gcloud dns record-sets transaction start --zone=ZONE_NAME
        
  3. 다음 DNS A 레코드를 추가합니다. 이렇게 하면 트래픽이 Google의 제한된 IP 주소로 다시 라우팅됩니다.

        gcloud dns record-sets transaction add \
            --name=DNS_NAME. \
            --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
            --zone=ZONE_NAME \
            --ttl=300
        
  4. 방금 추가한 A 레코드를 가리키도록 다음 DNS CNAME 레코드를 추가합니다. 그러면 도메인과 일치하는 모든 트래픽이 이전 단계에서 나열한 IP 주소로 리디렉션됩니다.

        gcloud dns record-sets transaction add \
            --name=\*.DNS_NAME. \
            --type=CNAME DNS_NAME. \
            --zone=ZONE_NAME \
            --ttl=300
        
  5. 트랜잭션을 실행합니다.

        gcloud dns record-sets transaction execute --zone=ZONE_NAME
        
  6. 다음 도메인 각각에 이 단계를 반복합니다. 반복할 때마다 ZONE_NAMEDNS_NAME을 해당 도메인에 적절한 값으로 변경합니다. 매번 PROJECT_IDNETWORK_NAME을 동일하게 유지합니다. *.aiplatform.googleapis.com에는 이미 이러한 단계를 완료했습니다.

    • *.aiplatform.googleapis.com
    • *.aiplatform-notebook.googleusercontent.com
    • *.aiplatform-notebook.cloud.google.com

비공개 연결을 구성하는 방법에 대한 자세한 내용은 Google API 및 서비스에 대한 비공개 연결 설정을 참고하세요.

인그레스 규칙을 사용하여 서비스 경계 외부에서 컨텍스트 인식 액세스 허용

클라이언트 속성을 기반으로 경계로 제한된 리소스에 대한 컨텍스트 인식 액세스를 허용할 수 있습니다. ID 유형(서비스 계정 또는 사용자), ID, 기기 데이터, 네트워크 원본(IP 주소 또는 VPC 네트워크)과 같은 클라이언트 속성을 지정할 수 있습니다.

예를 들어 IPv4 및 IPv6 주소 범위를 기준으로 경계 내에서 리소스에 대해 인터넷 액세스를 허용하는 인그레스 규칙을 설정할 수 있습니다. 인그레스 규칙을 사용하여 컨텍스트 인식 액세스를 설정하는 방법은 컨텍스트 인식 액세스를 참조하세요.

인그레스 및 이그레스 규칙을 사용하여 보안 데이터 교환 구성

프로젝트는 하나의 서비스 경계에만 포함할 수 있습니다. 경계 간 통신을 허용하려면 인그레스 및 이그레스 규칙을 설정합니다. 예를 들어 여러 경계의 프로젝트가 개별 경계의 로그를 공유할 수 있도록 인그레스 및 이그레스 규칙을 지정할 수 있습니다. 보안 데이터 교환 사용 사례에 대해 자세히 알아보려면 보안 데이터 교환을 참고하세요.

다음 단계