Owner 권한인데도 서비스 계정 API 키 생성이 안 된다면? 조직 정책 충돌이 원인입니다.
목차
- 문제 상황 — 왜 Owner인데 막히는가
- 원인 진단 — 조직 소속 확인
- 해결 Step 1 — 조직 정책 관리자 권한 부여
- 해결 Step 2 — 문제 정책 비활성화
- 해결 Step 3 — API 키 재생성 및 검증
- 여전히 막힌다면 — ADC 우회법
1. 문제 상황
GCP 무료 크레딧($300)으로 Vertex AI에서 Claude API를 호출하려고 서비스 계정 키를 생성하려 했는데, 프로젝트 Owner임에도 아래 에러가 뜹니다.
에러: iam.managed.disableServiceAccountApiKeyCreation 제약 조건에 의해 API 키 생성이 차단되었습니다.
직관적으로 말이 안 되는 상황이죠. Owner인데 왜 못 만드는 걸까요?
2. 원인 — GCP 권한 계층 구조
GCP의 권한 계층은 아래처럼 생겼습니다. 조직 정책은 IAM 역할(Owner 포함)보다 상위 레이어에 있습니다.
최상위
조직 정책
(Org Policy)
›
중간
폴더 / 프로젝트
정책
›
하위
IAM 역할
(Owner 등)
즉, 집주인(Owner)이라도 건물 관리 규정(Org Policy)에서 “방 구조 변경 금지”를 걸어두면 마음대로 못 바꿉니다.
핵심 진단: 콘솔 상단 프로젝트 드롭다운에서 프로젝트 옆에 조직 이름이 표시되나요? “조직 없음”이 아닌 특정 조직 이름이 뜬다면 그 조직의 정책이 적용된 것입니다.
3. 해결 방법
해당 조직의 관리자가 본인이라면 직접 정책을 풀 수 있습니다.
Step 1
조직 정책 관리자 권한 부여
- GCP 콘솔 →
IAM 및 관리자→IAM - 상단 범위를 프로젝트 → 조직으로 전환
- 본인 계정 옆 수정(연필) 아이콘 클릭
조직 정책 관리자 (Organization Policy Administrator)역할 추가- 저장
Step 2
문제 정책 비활성화
IAM 및 관리자→조직 정책으로 이동- 검색창에
disableServiceAccountApiKeyCreation입력 - 해당 정책 클릭 → [관리] 버튼
- “재정의 후 미적용 (Not enforced)” 으로 변경 → 저장
Step 3
서비스 계정 API 키 재생성 및 검증
IAM 및 관리자→서비스 계정으로 이동- 대상 서비스 계정 클릭 → 키 탭
- [키 추가] → JSON 형식으로 다운로드
4. 정책 수정 권한도 없다면 — ADC 우회법
조직 관리자가 본인이 아닌 경우(교육기관 제공 계정 등), API 키 방식 자체를 우회할 수 있습니다.
원리: Service Account API Key를 생성하지 않고, 현재 로그인된 사용자 인증 정보(ADC)를 SDK가 자동으로 읽어가게 하는 방식입니다.
terminal
gcloud auth application-default login gcloud config set project YOUR_PROJECT_ID
python
import anthropic
import google.auth
import google.auth.transport.requests
credentials, project = google.auth.default()
credentials.refresh(google.auth.transport.requests.Request())
client = anthropic.AnthropicVertex(
project_id=project,
region="us-east5"
)
message = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)
5. 그래도 할당량 0 에러가 뜬다면
정책 문제를 해결했는데도 “할당량 소진” 에러가 뜨는 경우가 있습니다. 신규 유료 계정은 Claude 등 파트너 모델의 초기 할당량이 0으로 설정되어 있기 때문입니다.
해결: GCP 콘솔 → IAM 및 관리자 → 할당량 및 시스템 한도 → Claude 관련 항목 검색 → 값이 0이면 [할당량 수정 요청]으로 최솟값(예: 1~5 RPM) 신청
요약: Owner 권한인데 막힌다 → 조직 소속 확인 → 조직 정책 관리자 권한 부여 → 정책 비활성화 → 키 재생성. 조직 수정 권한이 없다면 ADC 방식으로 우회.
이 글을 먼저 봐야 하는 사람과 아닌 사람
이 문제는 “GCP를 처음 써서 헷갈리는 상황”과 “조직 정책이 실제로 막고 있는 상황”이 섞여 보이기 쉽습니다. 무료 크레딧을 막 시작한 개인 계정이라도 결제 계정, 조직, 프로젝트가 얽히면 Owner 권한만으로 해결되지 않는 경우가 있습니다. 반대로 개인 프로젝트에 조직이 붙어 있지 않다면 이 글의 조직 정책 단계보다 서비스 계정 권한, API 활성화, 할당량 문제를 먼저 보는 편이 빠릅니다.
| 증상 | 먼저 볼 곳 | 다음 행동 |
|---|---|---|
disableServiceAccountApiKeyCreation 오류 | 조직 정책 | 조직 범위에서 정책 적용 여부 확인 |
| 키는 만들었는데 호출 실패 | 서비스 계정 IAM | Vertex AI 관련 역할과 API 활성화 확인 |
| 모델 호출 할당량이 0 | 할당량 및 시스템 한도 | 파트너 모델 할당량 증액 요청 |
| 조직 권한이 전혀 없음 | ADC 또는 새 개인 프로젝트 | 키 생성 없이 로그인 인증 방식 검토 |
무료 크레딧 환경에서 더 안전한 선택
학습용이나 개인 테스트라면 서비스 계정 키를 꼭 만들어야 하는지부터 다시 생각해볼 만합니다. 로컬 개발에서는 ADC 방식이 더 간단하고, 키 파일을 따로 보관하지 않아도 됩니다. 서버에 올려서 자동 실행해야 한다면 그때 서비스 계정 키 또는 Workload Identity 같은 방식을 검토하면 됩니다.
특히 무료 크레딧 환경에서는 “일단 키를 만들고 어디든 넣어두기”보다 인증 방식을 최소화하는 편이 좋습니다. 키 파일을 다운로드했다면 저장 위치를 기록하고, 공개 저장소나 공유 드라이브에 올라가지 않도록 관리해야 합니다. 막힌 오류를 푸는 것만큼이나 이후 키 관리가 중요합니다.
관련 흐름: Google API를 보고서 자동화에 쓰려는 목적이라면 Gemini 3.5 업무 활용과 모델 선택 기준, 로컬 실행까지 비교하려면 Gemma 4 로컬 AI 가이드를 먼저 보고, GA4 데이터를 구글 Colab에서 가져오는 방법과 오라클 클라우드 무료티어 서버 가이드도 이어서 볼 수 있습니다.
권한 문제를 해결한 다음 단계: Vertex AI에 연결한 뒤에는 모든 작업을 가장 큰 모델에 보내기보다 조회·계산·해석을 나눠야 합니다. Gemini 3.5 업무 활용 가이드에서 구글시트·드라이브 자동화용 모델 선택 구조를 이어서 확인할 수 있습니다.