IAM으로 액세스 제어

기본적으로 프로젝트 소유자와 편집자만 서비스와 작업을 생성, 업데이트, 삭제 또는 호출할 수 있으며, 프로젝트 소유자와 Cloud Run 관리자만 Identity and Access Management(IAM) 정책을 수정(예: 서비스를 공개하도록 설정)할 수 있습니다. 자세한 내용은 Cloud Run IAM 역할을 참조하세요.

다른 주 구성원 또는 그룹에 이러한 작업을 할 수 있는 권한을 부여하려면 IAM을 사용하여 역할을 다른 주 구성원에게 부여합니다.

사전 정의된 Cloud Run 역할

기본 역할(소유자, 편집자, 뷰어)과 비교할 때 다음과 같은 사전 정의된 역할은 Cloud Run 리소스 액세스를 보다 세밀하게 제어합니다.

역할 설명
Cloud Run 관리자(roles/run.admin) 서비스 및 작업을 만들고, 업데이트, 삭제하고, 작업 실행을 가져오고, 나열, 삭제할 수 있습니다.
서비스 및 작업을 호출하고, 작업 실행을 취소할 수 있습니다.
IAM 정책을 가져오고 설정할 수 있습니다.
권장사항을 보고, 적용, 해제할 수 있습니다.
서비스를 배포하려면 추가 구성이 필요합니다.
Cloud Run 개발자(roles/run.developer) 서비스 및 작업을 만들고, 업데이트, 삭제하고, 작업 실행을 가져오고, 나열, 삭제할 수 있습니다.
IAM 정책을 가져올 수 있지만 삭제할 수 없습니다.
권장사항을 보고, 적용, 해제할 수 있습니다.
Cloud Run 뷰어(roles/run.viewer) 서비스, 작업, 작업 실행을 볼 수 있습니다.
IAM 정책을 가져올 수 있습니다.
권장사항을 볼 수 있습니다.
Cloud Run 호출자(roles/run.invoker) 서비스 및 작업을 호출하고 작업 실행을 취소할 수 있습니다.

개별 서비스 또는 작업의 액세스 제어

IAM을 사용하여 서비스 또는 작업별로 액세스를 제어할 수 있습니다.

서비스 공개

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

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

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

Cloud Run 서비스를 만들려면 다음을 기존 main.tf 파일에 추가합니다.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloud-run-srv"
  location = "us-central1"

  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 바인딩은 유지됩니다.

도메인 제한 공유

조직 정책에서 도메인 제한 공유 제약조건이 적용되는 프로젝트에서는 기본적으로 공개 서비스를 만들 수 없습니다. 태그 및 조건부 정책을 사용하여 이 제약조건에서 특정 서비스를 제외할 수 있습니다. 자세한 내용은 도메인 제한 공유가 적용될 때 공개 Cloud Run 서비스 만들기에 대한 블로그 게시물을 참조하세요.

주 구성원 추가

작업 또는 서비스에 주 구성원을 추가할 수 있습니다.

서비스에 주 구성원 추가

서비스에 주 구성원을 추가하려면 다음 안내를 따르세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원을 추가할 서비스의 왼쪽에 있는 체크박스를 클릭합니다. 서비스 자체를 클릭하지 마세요.

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

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

  5. 새 주 구성원 텍스트 상자에 서비스에 액세스해야 하는 ID를 하나 이상 입력합니다.

  6. 역할 드롭다운 메뉴에서 하나 이상의 역할을 선택합니다. 창에 부여한 권한에 대한 간단한 설명과 함께 선택한 역할이 나타납니다.

  7. 저장을 클릭합니다.

gcloud

gcloud run services add-iam-policy-binding 명령어를 사용합니다.

gcloud run services add-iam-policy-binding SERVICE_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

여기서 SERVICE_NAME은 서비스 이름이고 MEMBER_TYPE은 주 구성원 유형(예: user:email@domain.com)이고 ROLE은 역할입니다.

MEMBER_TYPE에 사용 가능한 값 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Run IAM 역할을 참조하세요.

작업에 주 구성원 추가

작업에 주 구성원을 추가하려면 다음 안내를 따르세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원을 추가할 작업의 왼쪽에 있는 체크박스를 클릭합니다. 작업 자체를 클릭하지는 마세요.

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

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

  5. 새 주 구성원 텍스트 상자에 작업에 액세스해야 하는 ID를 하나 이상 입력합니다.

  6. 역할 드롭다운 메뉴에서 하나 이상의 역할을 선택합니다. 창에 부여한 권한에 대한 간단한 설명과 함께 선택한 역할이 나타납니다.

  7. 저장을 클릭합니다.

gcloud

gcloud run jobs add-iam-policy-binding 명령어를 사용합니다.

gcloud run jobs add-iam-policy-binding JOB_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

여기서 JOB_NAME은 작업 이름이고 MEMBER_TYPE은 주 구성원 유형(예: user:email@domain.com)이고 ROLE은 역할입니다.

MEMBER_TYPE에 사용 가능한 값 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Run IAM 역할을 참조하세요.

역할에서 주 구성원 삭제

서비스 또는 작업에서 주 구성원을 삭제할 수 있습니다.

서비스 역할에서 주 구성원 삭제

서비스 역할에서 주 구성원을 삭제하려면 다음을 수행하세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원을 삭제할 서비스의 왼쪽에 있는 체크박스를 클릭합니다. 서비스 자체를 클릭하지 마세요.

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

  4. 역할 목록 필터에 삭제할 주 구성원을 입력합니다. 그러면 해당 주 구성원에게 부여된 모든 역할이 표시됩니다.

  5. 원하는 역할 내의 주 구성원 옆에 있는 삭제 휴지통을 클릭하여 주 구성원에서 해당 역할을 삭제합니다.

  6. 확인 대화상자에 서비스의 모든 역할에서 해당 주 구성원을 삭제할 수 있는 옵션이 표시됩니다. 삭제를 클릭하여 역할에서 주 구성원을 삭제합니다.

gcloud

gcloud run services remove-iam-policy-binding 명령어를 사용합니다.

  gcloud run services remove-iam-policy-binding SERVICE_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

여기서 SERVICE_NAME은 서비스 이름이고 MEMBER_TYPE은 주 구성원 유형(예: user:email@domain.com)이고 ROLE은 역할입니다.

MEMBER_TYPE에 사용 가능한 값 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Run IAM 역할을 참조하세요.

작업 역할에서 주 구성원 삭제

작업에 대한 역할에서 주 구성원을 삭제하려면 다음 안내를 따르세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원을 추가할 작업의 왼쪽에 있는 체크박스를 클릭합니다. 작업 자체를 클릭하지는 마세요.

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

  4. 역할 목록 필터에 삭제할 주 구성원을 입력합니다. 그러면 해당 주 구성원에게 부여된 모든 역할이 표시됩니다.

  5. 원하는 역할 내의 주 구성원 옆에 있는 삭제 휴지통을 클릭하여 주 구성원에서 해당 역할을 삭제합니다.

  6. 확인 대화상자에 작업의 모든 역할에서 해당 주 구성원을 삭제할 수 있는 옵션이 표시됩니다. 삭제를 클릭하여 역할에서 주 구성원을 삭제합니다.

gcloud

gcloud run jobs remove-iam-policy-binding 명령어를 사용합니다.

  gcloud run jobs remove-iam-policy-binding JOB_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

여기서 JOB_NAME은 작업 이름이고 MEMBER_TYPE은 주 구성원 유형(예: user:email@domain.com)이고 ROLE은 역할입니다.

MEMBER_TYPE에 사용 가능한 값 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Run IAM 역할을 참조하세요.

주 구성원 일괄 추가 또는 삭제

서비스 및 작업에 대해 일괄 추가 또는 삭제할 수 있습니다.

서비스 주 구성원 일괄 추가 및 삭제

서비스의 일괄 추가 또는 삭제를 수행하려면 다음 안내를 따르세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원을 추가하거나 삭제할 서비스의 왼쪽에 있는 체크박스를 클릭합니다. 서비스 자체를 클릭하지 마세요.

  3. 주 구성원을 추가하거나 삭제할 서비스를 선택합니다.

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

주 구성원을 추가하려면 다음을 수행하세요.

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

  2. 새 주 구성원 텍스트 상자에 서비스에 액세스해야 하는 ID를 하나 이상 입력합니다.

  3. 역할 드롭다운 메뉴에서 역할(또는 역할들)을 선택합니다. 창에 부여한 권한에 대한 간단한 설명과 함께 선택한 역할이 나타납니다.

  4. 저장을 클릭합니다.

주 구성원을 삭제하려면 다음을 수행하세요.

  1. 역할 목록 필터에 삭제할 주 구성원을 입력합니다. 그러면 해당 주 구성원에게 부여된 모든 역할이 표시됩니다.

  2. 원하는 역할 내의 주 구성원 옆에 있는 삭제 휴지통을 클릭하여 주 구성원에서 해당 역할을 삭제합니다.

  3. 확인 대화상자에 서비스의 모든 역할에서 해당 주 구성원을 삭제할 수 있는 옵션이 표시됩니다. 삭제를 클릭하여 역할에서 주 구성원을 삭제합니다.

gcloud

IAM 정책을 만듭니다.

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

gcloud run services set-iam-policy 명령어를 사용합니다.

gcloud run services set-iam-policy SERVICE_NAME policy.json

MEMBER_TYPE에 사용 가능한 값 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Run IAM 역할을 참조하세요.

작업의 주 구성원 일괄 추가 및 삭제

작업의 일괄 추가 또는 삭제를 수행하려면 다음 안내를 따르세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원을 추가할 작업의 왼쪽에 있는 체크박스를 클릭합니다. 작업 자체를 클릭하지는 마세요.

  3. 주 구성원을 추가하거나 삭제할 작업을 선택합니다.

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

주 구성원을 추가하려면 다음을 수행하세요.

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

  2. 새 주 구성원 텍스트 상자에 서비스에 액세스해야 하는 ID를 하나 이상 입력합니다.

  3. 역할 드롭다운 메뉴에서 역할(또는 역할들)을 선택합니다. 창에 부여한 권한에 대한 간단한 설명과 함께 선택한 역할이 나타납니다.

  4. 저장을 클릭합니다.

주 구성원을 삭제하려면 다음을 수행하세요.

  1. 역할 목록 필터에 삭제할 주 구성원을 입력합니다. 그러면 해당 주 구성원에게 부여된 모든 역할이 표시됩니다.

  2. 원하는 역할 내의 주 구성원 옆에 있는 삭제 휴지통을 클릭하여 주 구성원에서 해당 역할을 삭제합니다.

  3. 확인 대화상자에 작업의 모든 역할에서 해당 주 구성원을 삭제할 수 있는 옵션이 표시됩니다. 삭제를 클릭하여 역할에서 주 구성원을 삭제합니다.

gcloud

IAM 정책을 만듭니다.

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
EOF

gcloud run jobs set-iam-policy 명령어를 사용합니다.

gcloud run jobs set-iam-policy JOB_NAME policy.json

MEMBER_TYPE에 사용 가능한 값 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Run IAM 역할을 참조하세요.

주 구성원 보기

서비스 및 작업의 주 구성원을 볼 수 있습니다.

서비스의 주 구성원 보기

서비스의 주 구성원을 보려면 다음 안내를 따르세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원과 역할을 보려는 서비스의 왼쪽에 있는 체크박스를 클릭합니다. 서비스 자체를 클릭하지 마세요.

  3. 주 구성원과 역할을 보려는 서비스를 선택합니다.

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

  5. 역할과 주 구성원의 목록이 부여된 역할을 기준으로 그룹화되어 표시됩니다.

gcloud

gcloud run services get-iam-policy 명령어를 사용합니다.

gcloud run services get-iam-policy SERVICE_NAME

작업의 주 구성원 보기

작업의 주 구성원을 보려면 다음 안내를 따르세요.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 주 구성원을 추가할 작업의 왼쪽에 있는 체크박스를 클릭합니다. 작업 자체를 클릭하지는 마세요.

  3. 주 구성원과 역할을 보려는 작업을 선택합니다.

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

  5. 역할과 주 구성원의 목록이 부여된 역할을 기준으로 그룹화되어 표시됩니다.

gcloud

gcloud run jobs get-iam-policy 명령어를 사용합니다.

gcloud run jobs get-iam-policy JOB_NAME

프로젝트의 모든 서비스 및 작업에 대한 액세스 제어

프로젝트의 모든 서비스 및 작업에서 주 구성원에게 역할을 부여하려면 프로젝트 수준 IAM을 사용하면 됩니다.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 프로젝트 수준의 전체 역할을 부여할 주 구성원을 찾습니다.

  3. 주 구성원 행의 오른쪽에 있는 수정 연필을 클릭합니다.

  4. 다른 역할 추가를 클릭하고 원하는 역할을 선택합니다.

  5. 저장을 클릭합니다.

gcloud

gcloud projects add-iam-policy-binding 명령어를 사용합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=MEMBER_TYPE \
  --role=ROLE

여기서 MEMBER_TYPE은 주 구성원 유형(예: user:email@domain.com)이고 ROLE은 역할(예: roles/run.admin)입니다.

allUsersallAuthenticatedUsers 주 구성원 유형을 프로젝트 수준으로 적용할 수 없으며 대신 각 서비스에 개별적으로 추가해야 합니다.

다음 단계

보안을 설정한 서비스에 개발자, 서비스, 사용자를 안전하게 인증하는 방법 알아보기