IAP로 App Engine 앱 보안

이 페이지에서는 App Engine 표준 또는 가변형 환경 애플리케이션을 배포하고 IAP (Identity-Aware Proxy)로 보안을 유지하는 방법을 안내합니다. 이 빠른 시작에는 로그인된 사용자 이름을 확인하는 App Engine 표준 환경 웹 앱용의 샘플 코드가 포함되어 있습니다.

CDN (콘텐츠 전송 네트워크)에서 리소스를 제공하려는 경우, 권장사항 가이드에서 중요한 정보를 확인하세요.

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

시작하기 전에

App Engine에 대해 IAP를 사용 설정하려면 다음 단계를 따르세요.

  1. 청구가 사용 설정된 Google Cloud 콘솔 프로젝트를 사용합니다.

  2. 기본 Google 관리 OAuth 클라이언트를 사용하려면 프로젝트가 Google Cloud 조직에 속해야 합니다. 조직이 없는 경우 조직을 만들 수 있습니다. 커스텀 OAuth 클라이언트 사용의 이점을 알아보려면 App Engine용 커스텀 OAuth 클라이언트 구성을 참조하세요. Google 관리 OAuth 클라이언트는 내부 사용자만 액세스할 수 있도록 허용합니다.

  3. 아직 App Engine 인스턴스를 설정하지 않았다면 설정합니다. 전체 둘러보기를 보려면 App Engine에 배포를 참조하세요.

IAP 사용 설정

콘솔

프로젝트가 조직에 속하지 않은 경우 커스텀 OAuth 사용자 인증 정보를 사용해야 합니다.

Dynamic include file

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.

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.
  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 application you want to restrict access to. To turn on IAP for a resource,
  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 principals with the IAP-Secured Web App User (roles/iap.httpsResourceAccessor) role on the project will be given access.

gcloud

Before you set up your project and IAP, you need an up-to-date version of the gcloud CLI. For instructions on how to install the gcloud CLI, see Install the gcloud CLI.

  1. To authenticate, use the Google Cloud CLI and run the following command.
    gcloud auth login
  2. Click the URL that appears and sign in.
  3. After you sign in, copy the verification code that appears and paste it in the command line.
  4. Run the following command to specify the project that contains the applications that you want to protect with IAP.
    gcloud config set project PROJECT_ID
  5. To enable IAP, run the following command.
    gcloud iap web enable --resource-type=app-engine --versions=version
  6. Add principals who should have the IAP-secured Web App user role to the project.
    gcloud projects add-iam-policy-binding PROJECT_ID \
           --member=PRINCIPAL_IDENTIFIER \
           --role=roles/iap.httpsResourceAccessor
    • Replace PROJECT_ID with your project ID.
    • Replace PRINCIPAL_IDENTIFIER with the necessary principals. This can be a type of domain, group, serviceAccount, or user. For example, user:myemail@example.com.

After you enable IAP, you can use the gcloud CLI to modify the IAP access policy using the IAM role roles/iap.httpsResourceAccessor. Learn more about managing roles and permissions.

API

  1. Run the following command to prepare a settings.json file.

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

  2. Run the following command to enable 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://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
    

After you enable IAP, you can use the Google Cloud CLI to modify the IAP access policy using the IAM role roles/iap.httpsResourceAccessor. Learn more about managing roles and permissions.

프로젝트 내에서 App Engine 서비스에 대해 IAP를 사용 설정할 수 있습니다. 일부 서비스에 공개적으로 액세스할 수 있도록 하고 다른 서비스에 인증을 요구하려면 서비스 전반에서 다양한 액세스 수준을 사용할 수 있습니다. 자세한 내용은 IAP로 액세스 관리를 참조하세요. 서비스에 공개적으로 액세스할 수 있도록 하려면 allAuthenticatedUsers에 IAP 보안 웹 앱 사용자 역할을 부여합니다.

사용자 인증 테스트

  1. 역할이 부여되면 주 구성원은 IAP로 인증하여 앱에 액세스할 수 있습니다. IAP 보안 웹 앱 사용자(roles/iap.httpsResourceAccessor) 역할이 부여된 Google 계정에서 앱 URL에 액세스합니다.

  2. 액세스를 테스트하려면 Chrome에서 시크릿 창을 열고 앱 URL에 액세스한 후 메시지가 표시되면 로그인합니다. IAP 보안 웹 앱 사용자 (roles/iap.httpsResourceAccessor) 역할이 부여되고 인증에 성공한 사용자는 앱에 액세스할 수 있습니다. 필요한 역할이 부여되지 않거나 인증에 실패한 사용자는 앱에 액세스할 수 없습니다.

다음 단계