IAM으로 액세스 제어

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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

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

개별 서비스에 대한 액세스 제어

서비스별로 액세스를 제어하려는 경우 서비스별 IAM을 사용할 수 있습니다.

서비스 공개

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

콘솔 UI

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

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

    Google Cloud 콘솔로 이동

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

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

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

새 주 구성원 텍스트 상자에 allUsers 값을 입력합니다.

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

  2. 저장을 클릭합니다.

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

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

gcloud

특수 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

Terraform

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

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

  template {
    spec {
      containers {
        image = "gcr.io/cloudrun/hello"
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

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

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

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

도메인 제한 공유

조직 정책에서 도메인 제한 공유 제약조건이 적용되는 프로젝트에서는 공개 서비스를 만들 수 없습니다. 이 제한이 적용되지 않는 폴더에 모든 프로젝트를 만들고 프로젝트에서 기본 제약조건을 복원하여 기존 프로젝트에서 삭제하는 것이 좋습니다.

주 구성원 추가

콘솔 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 역할을 참조하세요.

역할에서 주 구성원 삭제

콘솔 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 역할을 참조하세요.

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

콘솔 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 역할을 참조하세요.

주 구성원 보기

콘솔 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

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

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

콘솔 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 주 구성원 유형을 프로젝트 수준으로 적용할 수 없으며 대신 각 서비스에 개별적으로 추가해야 합니다.

다음 단계

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