IAP로 Compute Engine 앱 및 리소스 보안

이 페이지에서는 IAP(Identity-Aware Proxy)를 사용하여 Compute Engine 인스턴스를 보호하는 방법을 설명합니다.

Google Cloud에 없는 리소스를 보호하려면 온프레미스 앱 및 리소스 보호를 참고하세요.

시작하기 전에

Compute Engine에 IAP를 사용 설정하려면 다음이 필요합니다.

Compute Engine 인스턴스를 아직 설정하지 않은 경우 전체적으로 둘러보려면 Compute Engine을 위한 IAP 설정을 참조하세요.

IAP는 Google 관리 OAuth 클라이언트를 사용하여 사용자를 인증합니다. 조직 내 사용자만 IAP가 사용 설정된 애플리케이션에 액세스할 수 있습니다. 조직 외부 사용자에게 액세스를 허용하려면 외부 애플리케이션에 IAP 사용 설정을 참조하세요.

Compute Engine 백엔드 서비스 또는 Compute Engine 전달 규칙에서 IAP를 사용 설정할 수 있습니다. Compute Engine 백엔드 서비스에서 IAP를 사용 설정하면 해당 백엔드 서비스만 IAP로 보호됩니다. Compute Engine 전달 규칙에서 IAP를 사용 설정하면 전달 규칙 뒤에 있는 모든 Compute Engine 인스턴스가 IAP로 보호됩니다.

전달 규칙에서 IAP 사용 설정

부하 분산기 승인 정책 프레임워크를 사용하여 전달 규칙에서 IAP를 사용 설정할 수 있습니다.

gcloud

  1. 다음 명령어를 실행하여 policy.yaml 파일을 준비합니다.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
customProvider:
  cloudIap: {}
target:
  loadBalancingScheme: EXTERNAL_MANAGED
  resources:
  - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
  1. 다음 명령어를 실행하여 전달 규칙에서 IAP를 사용 설정합니다.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \
--source=policy.yaml \
--location=LOCATION \
--project=PROJECT_ID

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • LOCATION: 리소스가 있는 리전입니다.
  • FORWARDING_RULE_ID: 전달 규칙 리소스 ID입니다.
  • AUTHZ_POLICY_NAME: 승인 정책 이름입니다.

API

  1. 다음 명령어를 실행하여 policy.json 파일을 준비합니다.
    cat << EOF > policy.json
    {
    "name": "AUTHZ_POLICY_NAME",
    "target": {
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "resources": [
    "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID"
    ],
    },
    "action": "CUSTOM",
    "httpRules": [],
    "customProvider": {
    "cloudIap": {}
    }
    }
    EOF
    
  2. 다음 명령어를 실행하여 전달 규칙에서 IAP를 사용 설정합니다.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
    

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
    • LOCATION: 리소스가 있는 리전입니다.
    • FORWARDING_RULE_ID: 전달 규칙 리소스 ID입니다.
    • AUTHZ_POLICY_NAME: 승인 정책 이름입니다.

전달 규칙에서 IAP를 사용 설정한 후에 리소스에 권한을 적용할 수 있습니다.

Compute Engine 백엔드 서비스에서 IAP 사용 설정

해당 백엔드 서비스를 통해 Compute Engine 백엔드 서비스에서 IAP를 사용 설정할 수 있습니다.

콘솔

콘솔을 사용하여 IAP를 사용 설정하면 Google 관리 OAuth 클라이언트를 사용할 수 없습니다. Google Cloud

If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.

If you are running GKE clusters version 1.24 or later, you can configure IAP and GKE by using the Kubernetes Gateway API. To do so, complete the following steps and then follow the instructions in Configure IAP. Do not configure BackendConfig.

Setting up IAP access

  1. Go to the Identity-Aware Proxy page.
    Go to the Identity-Aware Proxy page
  2. Select the project you want to secure with IAP.
  3. Select the checkbox next to the resource you want to grant access to.

    If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.

    To verify that the backend service is available, run the following gcloud command:

    gcloud compute backend-services list
  4. On the right side panel, click Add principal.
  5. In the Add principals dialog that appears, enter the email addresses of groups or individuals who should have the IAP-secured Web App User role for the project.

    The following kinds of principals can have this role:

    • Google Account: user@gmail.com
    • Google Group: admins@googlegroups.com
    • Service account: server@example.gserviceaccount.com
    • Google Workspace domain: example.com

    Make sure to add a Google Account that you have access to.

  6. Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
  7. Click Save.

Turning on IAP

  1. On the Identity-Aware Proxy page, under APPLICATIONS, find the load balancer that serves the instance group you want to restrict access to. To turn on IAP for a resource,
    To enable IAP:
    • At least one protocol in the load balancer frontend configuration must be HTTPS. Learn about setting up a load balancer.
    • You need the compute.backendServices.update, clientauthconfig.clients.create, and clientauthconfig.clients.getWithSecret permissions. These permissions are granted by roles, such as the Project Editor role. To learn more, see Managing access to IAP-secured resources.
  2. In the Turn on IAP window that appears, click Turn On to confirm that you want IAP to secure your resource. After you turn on IAP, it requires login credentials for all connections to your load balancer. Only accounts with the IAP-Secured Web App User role on the project will be given access.

gcloud

프로젝트와 IAP를 설정하려면 최신 버전의 gcloud CLI가 필요합니다. gcloud CLI 설치 방법에 대한 자세한 내용은 gcloud CLI 설치를 참조하세요.

  1. 인증하려면 Google Cloud CLI를 사용하고 다음 명령어를 실행합니다.
    gcloud auth login
  2. 로그인하려면 표시되는 URL을 따릅니다.
  3. 로그인한 후에는 표시된 확인 코드를 복사하고 이를 명령줄에 붙여넣습니다.
  4. 다음 명령어를 실행하여 IAP로 보호하려는 리소스가 포함된 프로젝트를 지정합니다.
    gcloud config set project PROJECT_ID
  5. IAP를 사용 설정하려면 전역 또는 리전 범위 명령어를 실행합니다.

    전역 범위
    gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
    리전 범위
    gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled

IAP를 사용 설정한 후 gcloud CLI를 사용하여 IAM 역할 roles/iap.httpsResourceAccessor를 사용하여 IAP 액세스 정책을 수정할 수 있습니다. 역할 및 권한 관리에 대해 자세히 알아보세요.

API

  1. 다음 명령어를 실행하여 settings.json 파일을 준비합니다.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true
      }
    }
    EOF
    

  2. 다음 명령어를 실행하여 IAP를 사용 설정합니다.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

IAP를 사용 설정한 후 Google Cloud CLI를 사용하여 IAM 역할 roles/iap.httpsResourceAccessor를 사용하여 IAP 액세스 정책을 수정할 수 있습니다. 역할 및 권한 관리에 대해 자세히 알아보세요.

다음 단계