IAM으로 액세스 승인

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

시작하기 전에

특정 함수나 프로젝트의 모든 함수에 대한 액세스를 제어하는 데 필요한 권한을 얻으려면 관리자에게 해당 함수 또는 프로젝트에 대한 Cloud Functions 관리자(roles/function.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 특정 함수 또는 프로젝트의 모든 함수에 대한 액세스를 제어하는 데 필요한 cloudfunctions.functions.setIamPolicy 권한이 포함되어 있습니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

Cloud Functions 역할과 관련 권한의 전체 목록은 Cloud Functions IAM 역할을 참조하세요.

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

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

주 구성원 추가 및 역할 부여

콘솔

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

    Google Cloud 콘솔로 이동

  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 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  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 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

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

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

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

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

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

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

  4. 저장을 클릭합니다.

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 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

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

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

  4. 주 구성원별로 보기 탭을 선택하여 선택한 함수에 대한 권한이 있는 모든 주 구성원 목록을 확인합니다.

gcloud

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

gcloud functions get-iam-policy FUNCTION_NAME

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

2020년 1월 15일부터 인증되지 않은 호출 허용이 사용 설정되지 않은 HTTP 함수는 적절한 권한이 없는 최종 사용자 및 서비스 계정에 대한 액세스 권한을 제한합니다.

인증되지 않은 호출을 허용하려면 배포 시 또는 배포 후에 이를 지정해야 합니다.

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

배포 시

콘솔

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

gcloud

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

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

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

배포 후

Cloud Functions(1세대):

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

콘솔

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

    Google Cloud 콘솔로 이동

  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"

이러한 필드에 대한 자세한 내용은 gcloud functions add-iam-policy-binding 참조를 확인하세요.

Cloud Functions(2세대):

콘솔

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

    Google Cloud 콘솔로 이동

  2. 액세스 권한을 부여할 함수의 연결된 이름을 클릭합니다.

  3. 함수 세부정보 개요 페이지의 오른쪽 상단에 있는 Cloud Run 제공 링크를 클릭합니다.

  4. 보안 탭을 열고 인증에서 인증되지 않은 호출 허용을 선택합니다.

  5. 저장을 클릭합니다.

gcloud

gcloud run services add-iam-policy-binding 명령어를 사용하여 특정 함수에 roles/run.invoker 역할을 부여합니다.

gcloud run services add-iam-policy-binding FUNCTION_NAME \
--member="user:USER_EMAIL"\
--role="roles/run.invoker"

이러한 필드에 대한 자세한 내용은 gcloud run add-iam-policy-binding 참조를 확인하세요.

도메인 제한 공유

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

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

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

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