IAM을 통한 액세스 승인

ID 및 액세스 관리(IAM)를 사용하여 ID 생성, 업데이트, 삭제와 같이 함수에 대한 관리 작업을 수행할 권한을 ID에 부여합니다. 함수에 주 구성원(사용하려는 ID, 일반적으로 사용자 또는 서비스 계정 이메일)을 추가한 다음 적절한 IAM 역할을 주 구성원에게 부여합니다. 이러한 역할에는 수행할 수 있는 작업을 정의하는 권한이 포함됩니다.

함수에 대한 액세스 사용 설정

IAM을 통해 개별 ID에 역할을 부여하거나 제한하는 함수에 대한 작업을 제어할 수 있습니다.

주 구성원 추가 및 역할 부여

콘솔

  1. Google Cloud Console로 이동합니다.

    Google Cloud Console로 이동

  2. 관심 있는 함수 옆의 체크박스를 클릭합니다.

  3. 화면 상단의 권한을 클릭합니다. 권한 패널이 열립니다.

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

  5. 새 주 구성원 필드에 함수에 액세스해야 하는 ID를 한 개 이상 입력합니다. 일반적으로 사용자 또는 서비스 계정 이메일입니다.

  6. 역할 선택 드롭다운 메뉴에서 역할을 한 개 이상 선택합니다. 선택한 역할 및 부여되는 권한에 대한 간단한 설명이 창에 표시됩니다.

  7. 저장을 클릭합니다.

gcloud

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

gcloud functions add-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE

여기서 FUNCTION_NAME은 함수 이름이고 PRINCIPAL_ID는 주 구성원 ID(일반적으로 이메일)이고 ROLE은 역할입니다.

PRINCIPAL_ID를 제공할 수 있는 소스 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Functions IAM 역할 참조 페이지를 확인하세요.

주 구성원에서 역할 삭제

콘솔

  1. Google Cloud Console로 이동합니다.

    Google Cloud Console로 이동

  2. 관심 있는 함수 옆의 체크박스를 클릭합니다.

  3. 화면 상단의 권한을 클릭합니다. 권한 패널이 열립니다.

  4. 삭제할 주 구성원을 검색합니다. 주 구성원에게 부여된 모든 역할을 확인합니다.

  5. 삭제할 역할에서 주 구성원을 찾으면 옆에 있는 휴지통 아이콘을 클릭합니다. 주 구성원의 액세스 권한을 완전히 삭제하려면 주 구성원에게 부여된 역할마다 이 작업을 수행합니다.

gcloud

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

  gcloud functions remove-iam-policy-binding FUNCTION_NAME \
    --member=PRINCIPAL_ID \
    --role=ROLE

여기서 FUNCTION_NAME은 함수 이름이고 PRINCIPAL_ID는 서비스 계정을 식별하는 이메일 주소이며 serviceAccount:로 시작하고 ROLE은역할입니다.

PRINCIPAL_ID에 사용 가능한 소스 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Functions IAM 역할 참조 페이지를 확인하세요.

주 구성원에게 여러 역할이 부여된 경우 삭제할 역할을 지정해야 합니다.

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

콘솔

  1. Google Cloud Console로 이동합니다.

    Google Cloud Console로 이동

  2. 액세스 권한을 부여하거나 제한할 함수 옆의 체크박스를 클릭합니다.

  3. 화면 상단의 권한을 클릭합니다. 권한 패널이 열립니다.

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

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

  2. 새 주 구성원에서 함수에 액세스해야 하는 ID를 여러 개 입력합니다.

  3. 역할 선택 드롭다운 메뉴에서 역할을 한 개 이상 선택합니다. 선택한 역할 및 부여되는 권한에 대한 간단한 설명이 창에 표시됩니다.

  4. 저장을 클릭합니다.

주 구성원을 삭제하려면 다음 안내를 따르세요.

  1. 삭제할 주 구성원을 검색하거나 주 구성원의 역할을 펼칩니다.

  2. 삭제할 주 구성원을 찾으면 옆에 있는 휴지통 아이콘을 클릭합니다. 주 구성원의 액세스 권한을 완전히 삭제하려면 주 구성원에게 부여된 역할마다 이 작업을 수행합니다.

gcloud

예를 들어 policy.json이라는 IAM 정책을 만듭니다.

{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        PRINCIPAL_ID
      ]
    }
  ]
}

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

gcloud functions set-iam-policy FUNCTION_NAME policy.json

PRINCIPAL_ID에 사용 가능한 소스 목록은 IAM 개념 페이지를 참조하세요. ROLE에 사용 가능한 값 목록은 Cloud Functions IAM 역할 참조 페이지를 확인하세요.

주 구성원 보기

콘솔

  1. Google Cloud Console로 이동합니다.

    Google Cloud Console로 이동

  2. 관심 있는 함수의 이름을 클릭합니다.

  3. 권한 탭을 선택합니다. 권한 패널이 열립니다.

  4. 주 구성원 탭이 선택되었는지 확인합니다.

gcloud

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

gcloud functions get-iam-policy FUNCTION_NAME

인증되지 않은 HTTP 함수 호출 허용

2020년 1월 15일부터 모든 HTTP 함수는 기본적으로 대부분의 호출자를 인증해야 합니다. 인증되지 않은 호출을 허용하려면 배포 시 또는 배포 후에 이를 지정해야 합니다.

위에 설명된 방식의 특수한 변형을 사용하여 인증되지 않은 호출자가 HTTP 함수를 호출할 수 있는 권한을 부여합니다.

배포 시

Console

구성 패널의 인증 섹션에서 인증되지 않은 호출 허용을 선택합니다.

gcloud

gcloud functions deploy 명령어는 함수를 생성하는 동안 호출 권한을 구성하는 데 도움이 되는 프롬프트를 포함하며 --allow-unauthenticated 플래그도 포함합니다.

gcloud functions deploy FUNCTION_NAME \
  --trigger-http \
--allow-unauthenticated \
...

나중에 동일한 함수를 배포하면 이 플래그를 사용하지 않더라도 상태가 변경되지 않습니다.

배포 후

인증되지 않은 함수 호출을 허용하려면 함수에서 특수 allUsers 주 구성원에 Cloud Functions 호출자 역할을 부여합니다.

콘솔

  1. Google Cloud Console로 이동합니다.

    Google Cloud Console로 이동

  2. 액세스 권한을 부여할 함수 옆의 체크박스를 클릭합니다.

  3. 화면 상단의 권한을 클릭합니다. 권한 패널이 열립니다.

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

  5. 새 주 구성원 필드에 allUsers를 입력합니다.

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

  7. 저장을 클릭합니다.

gcloud

gcloud functions add-iam-policy-binding 명령어를 사용하여 함수에서 특수 allUsers 주 구성원에게 roles/cloudfunctions.invoker 역할을 부여합니다.

gcloud functions add-iam-policy-binding FUNCTION_NAME \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"

도메인 제한 공유

도메인 제한 공유 조직 정책이 적용되는 프로젝트에서 함수를 개발하는 경우 함수의 인증되지 않은 호출을 허용할 수 없습니다. 이 정책은 데이터 유출 위험을 줄이기 위해 공개 데이터 공유를 제한합니다.

인증되지 않은 호출을 허용하는 함수를 배포하려면 프로젝트에서 도메인 제한 공유 조직 정책을 삭제하는 것이 좋습니다. 조직 정책은 조직, 폴더 또는 프로젝트 수준에서 설정할 수 있습니다.

인증되지 않은 호출을 허용하는 함수를 생성한 후 조직 정책을 다시 사용 설정할 수 있습니다.

  • 조직 정책을 다시 사용 설정하기 전에 배포된 함수는 인증되지 않은 호출을 계속 허용합니다.
  • 이러한 기존 함수의 새 버전은 인증된 호출 없이 배포할 수 있습니다.
  • 인증되지 않은 호출을 허용하는 새 함수는 배포할 수 없습니다.

프로젝트의 모든 함수에 대한 액세스 제어

프로젝트의 모든 함수에 역할을 부여하려면 프로젝트에 해당 역할을 부여하면 됩니다.