공개(인증되지 않은) 액세스 허용

공개 API 또는 웹사이트에 해당하는 Cloud Run 서비스를 위한 옵션입니다.

공개 Cloud Run 서비스를 만드는 방법에는 두 가지가 있습니다.

  • Cloud Run 호출자 IAM 검사를 중지합니다(권장).
  • allUsers 구성원 유형에 Cloud Run 호출자 IAM 역할을 할당합니다.

Cloud Run 호출자 IAM 검사 사용 중지

공개 서비스를 만드는 데 권장되는 방법은 Cloud Run 호출자 IAM 검사를 사용 중지하는 것입니다. 이 검사는 기본적으로 적용됩니다. 이는 프로젝트에 조직 정책의 도메인 제한 공유 제약조건이 적용되는 경우 특히 유용한 솔루션입니다.

서비스에서 호출자 IAM 검사를 사용 중지하거나 다시 사용 설정하려면 다음 권한이 있어야 합니다.

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

이러한 권한은 소유자Cloud Run 관리자 역할 모두에 포함됩니다. 역할과 관련 권한의 전체 목록은 [Cloud Run IAM 역할][1]을 참조하세요.

Cloud Run 호출자 IAM 검사 사용 중지

검사를 사용 중지하려면 다음 단계를 따르세요.

콘솔

  1. Cloud Run으로 이동

  2. 새 서비스를 구성하는 경우 서비스 만들기를 클릭한 후 필요에 따라 초기 서비스 설정 페이지를 작성합니다. 기존 서비스를 구성하는 경우 서비스를 클릭한 후 보안을 클릭합니다.

  3. IAM을 사용하여 수신 요청 인증을 선택 해제합니다.

  4. 만들기 또는 저장을 클릭합니다.

gcloud

  • 새 서비스의 경우 --no-invoker-iam-check 플래그와 함께 gcloud run deploy 명령어를 사용합니다.

    gcloud run deploy SERVICE_NAME --no-invoker-iam-check

    여기서 SERVICE_NAME은 서비스 이름입니다.

  • 기존 서비스의 경우 --no-invoker-iam-check 플래그와 함께 gcloud run services update 명령어를 사용합니다.

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

    여기서 SERVICE_NAME은 서비스 이름입니다.

YAML

  1. 구성을 보고 다운로드하려면 다음을 실행합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. run.googleapis.com/invoker-iam-disabled: 주석을 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        annotations:
          run.googleapis.com/invoker-iam-disabled: true
        name: SERVICE_NAME

    여기서 SERVICE_NAME은 Cloud Run 서비스의 이름입니다.

  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud run services replace service.yaml

서비스의 HTTPS 엔드포인트로 이동하여 배포 후 검사가 사용 중지되었는지 확인합니다.

Cloud Run 호출자 IAM 검사 다시 사용 설정

검사를 다시 사용 설정하려면 다음 단계를 따르세요.

콘솔

  1. Cloud Run으로 이동

  2. 서비스를 클릭한 다음 보안을 클릭합니다.

  3. IAM을 사용하여 수신 요청 인증을 선택합니다.

  4. 저장을 클릭합니다.

gcloud

  • --invoker-iam-check 플래그를 전달하여 서비스를 업데이트합니다.

    gcloud run services update SERVICE_NAME --invoker-iam-check

    여기서 SERVICE_NAME은 서비스 이름입니다.

YAML

  1. 구성을 보고 다운로드하려면 다음을 실행합니다.

    gcloud run services describe SERVICE --format export > service.yaml
  2. run.googleapis.com/invoker-iam-disabled: 주석을 업데이트합니다.

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invoker-iam-disabled: false
        name: SERVICE_NAME

    여기서 SERVICE_NAME은 Cloud Run 서비스의 이름입니다.

서비스의 HTTPS 엔드포인트로 이동하여 배포 후 검사가 다시 사용 설정되었는지 확인합니다.

Cloud Run 호출자 IAM 검사에 대한 조직 정책 구성

관리자는 constraints/run.managed.requireInvokerIam 관리형 제약 조건을 사용하여 호출자 IAM 검사를 중지하는 기능을 제한할 수 있습니다. 이 제약 조건은 기본적으로 적용되지 않습니다.

allUsers 구성원 유형에 Cloud Run IAM 호출자 역할 할당

allUsers 구성원 유형에 Cloud Run 호출자 IAM 역할을 할당하여 서비스에 인증되지 않은 호출을 허용할 수 있습니다.

Cloud Run 서비스에서 인증을 구성하려면 run.services.setIamPolicy 권한이 있어야 합니다. 이 권한에는 소유자Cloud Run 관리자 역할이 모두 있습니다. 역할과 해당 연결된 권한의 전체 목록은 Cloud Run IAM 역할을 참조하세요.

Console UI

기존 Cloud Run 서비스의 경우 다음 안내를 따르세요.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 공개하려는 서비스의 왼쪽에 있는 체크박스를 클릭합니다. 서비스 자체를 클릭하지 마세요.

  3. 오른쪽 상단에 있는 정보 창에서 권한 탭을 클릭합니다. 정보 창이 표시되지 않으면 정보 패널 표시를 클릭한 후 권한을 클릭해야 할 수 있습니다.

  4. 주 구성원 추가를 클릭합니다.

새 주 구성원 필드에 allUsers 값을 입력합니다.

  1. 역할 드롭다운 메뉴에서 Cloud Run 호출자 역할을 선택합니다.

  2. 저장을 클릭합니다.

  3. 이 리소스를 공개할지 확인하라는 메시지가 표시됩니다. 공개 액세스 허용을 클릭하여 서비스 IAM 설정에 변경사항을 적용합니다.

만들려는 새 서비스의 경우 서비스를 만들되 인증 탭에서 인증되지 않은 호출 허용을 선택하여 서비스를 공개적으로 사용할 수 있게 해야 합니다. 인증 필요를 선택하면 서비스가 비공개로 설정됩니다.

gcloud

서비스에 공개적으로 액세스할 수 있도록 하려면 gcloud run services 명령어를 사용하여 서비스에 특수한 allUsers 구성원 유형을 추가하고 roles/run.invoker 역할을 부여합니다.

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

서비스를 배포할 때 gcloud run deploy 명령어를 실행하여 서비스에 공개적으로 액세스할 수 있도록 합니다.

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

다음 콘텐츠로 policy.yaml이라는 파일을 만듭니다.

bindings:
- members:
  - allUsers
  role: roles/run.invoker

다음을 사용하여 기존 SERVICE에 인증되지 않은 호출을 허용합니다.

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

Terraform 구성에서 다음을 google_cloud_run_v2_service 리소스에 추가합니다.
resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

roles/run.invoker의 서비스 IAM 바인딩을 업데이트하려면 Cloud Run 서비스를 참조하는 다음 리소스를 추가합니다.

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

이 바인딩은 지정된 역할에 대해서만 권한이 있습니다. 서비스 IAM 정책 내 다른 IAM 바인딩은 유지됩니다.