개발자 인증

개발자는 서비스 생성, 업데이트, 삭제와 같은 관리 작업 외에도 서비스를 출시하기 전에 비공개로 테스트할 수 있습니다. Cloud Run 작업이 아닌 Cloud Run 서비스를 위한 옵션입니다.

시작하기 전에

인증 중인 서비스에 액세스할 수 있는 권한을 부여해야 합니다. 개발자 또는 개발자 그룹에 Cloud Run 호출자 역할을 부여해야 합니다.

Console UI

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

    Google Cloud 콘솔로 이동

  2. 서비스를 선택하되 클릭하지 않습니다.

  3. 오른쪽 측면 패널에서 권한 탭을 클릭합니다. (먼저 오른쪽 상단에 있는 정보 패널 표시를 클릭해야 할 수도 있습니다.)

  4. 회원 추가를 클릭합니다.

  5. 구성원 추가 필드에 개발자 계정 이메일을 입력합니다.

  6. 역할 선택 드롭다운 메뉴에서 Cloud Run Invoker 역할을 선택합니다.

  7. 저장을 클릭합니다.

gcloud

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

gcloud run services add-iam-policy-binding SERVICE \
  --member='USER:EMAIL' \
  --role='roles/run.invoker'

각 항목의 의미는 다음과 같습니다.

  • SERVICE은 서비스의 이름입니다.
  • USER는 승인 대상이 단일 개발자 또는 그룹인지에 따라 user 또는 group 값입니다.
  • EMAIL은 이메일 계정입니다.

    예:

    gcloud run services add-iam-policy-binding myservice \
    --member='user:test-user@gmail.com' \
    --role='roles/run.invoker'
    

비공개 서비스 테스트

Google Cloud CLI에서 Cloud Run 프록시 사용

비공개 서비스를 테스트하는 가장 쉬운 방법은 Google Cloud CLI에서 Cloud Run 프록시를 사용하는 것입니다. 그러면 비공개 서비스가 http://localhost:8080(또는 --port로 지정된 포트)으로 프록시되어 활성 계정의 토큰 또는 지정한 다른 토큰이 제공됩니다. 이렇게 하면 웹브라우저 또는 curl 등의 도구를 사용할 수 있습니다. 이는 브라우저에서 웹사이트 또는 API를 비공개로 테스트하는 데 권장되는 방법입니다.

다음 명령어를 사용하여 서비스를 로컬로 프록시할 수 있습니다.

gcloud run services proxy SERVICE --project PROJECT-ID

curl 사용

curl과 같은 도구를 사용하고 Authorization 헤더에 인증 토큰을 전달하여 프록시 없이 비공개 서비스를 테스트할 수 있습니다.

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

curl 명령어가 작동하려면 Cloud Run 관리자 또는 Cloud Run 호출자와 같이 run.routes.invoke 권한이 있는 사용자에게 유효한 ID 토큰을 전달해야 합니다. 역할과 관련 권한의 전체 목록은 Cloud Run IAM 역할을 참조하세요.

gcloud CLI에 로그인된 ID의 유효한 ID 토큰을 가져오려면 gcloud auth print-identity-token을 사용합니다. 계정에 서비스에 대한 run.routes.invoke 권한이 있는 한 gcloud CLI로 생성된 토큰을 사용하여 모든 프로젝트에서 HTTP 요청을 호출할 수 있습니다. 개발 목적으로는 gcloud CLI로 생성된 ID 토큰을 사용합니다. 그러나 이러한 토큰에는 대상 클레임이 없으므로 릴레이 공격에 취약합니다. 프로덕션 환경에서는 적절하게 지정된 대상과 함께 서비스 계정에 발급된 ID 토큰을 사용합니다. 이 방식은 토큰 사용을 의도한 서비스로만 제한하여 보안을 강화합니다.

서비스를 개발하고 사용하는 데 필요한 최소 권한 집합을 할당하는 것이 좋습니다. 서비스에 대한 IAM 정책이 최소 사용자 수와 서비스 계정 수로 제한되어 있는지 확인합니다.