2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

서비스 계정의 키를 사용하여 Cloud Endpoints에 인증을 추가하는 방법은?

_____
Q: 서비스 계정 키를 사용하여 Cloud Endpoints에 인증을 추가하려면 어떻게 해야 하나요?

A: 서비스 계정 키를 이용해 Cloud Endpoints에 인증을 추가하는 절차는 다음과 같습니다.

1. 서비스 계정 및 키 생성
- Google Cloud Console에서 서비스 계정을 생성합니다.
- 생성한 서비스 계정에 적절한 역할(예: `roles/iam.serviceAccountTokenCreator`)을 부여합니다.
- 서비스 계정 키(JSON 형식)를 생성하여 다운로드합니다.

2. OpenAPI 스펙에 인증 설정 추가
- Endpoints에서 OAuth 2.0 또는 JWT 인증을 설정하려면 OpenAPI (Swagger) 스펙에 보안 스키마를 정의합니다.
- 예: JWT 인증의 경우 다음과 같이 `securityDefinitions`에 추가합니다.
```yaml
securityDefinitions:
google_id_token:
authorizationUrl: ""
flow: "implicit"
type: "oauth2"
x-google-issuer: "SERVICE_ACCOUNT_EMAIL"
x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/jwk/SERVICE_ACCOUNT_EMAIL"
x-google-audiences: "YOUR_BACKEND_SERVICE_CLIENT_ID"
```
- 그리고 각 API 경로(`paths`)에 `security` 항목을 추가해 인증을 요구하도록 설정합니다.

3. 서비스 계정 키를 사용해 호출자 인증 토큰 생성
- 클라이언트 또는 호출자는 서비스 계정 키(JSON)를 바탕으로 JWT 또는 OIDC 토큰을 생성합니다.
- 예를 들어 Google의 공식 라이브러리를 사용해 서비스 계정 키를 이용, 인증 토큰(ID 토큰 또는 액세스 토큰)을 생성합니다.
- 생성한 토큰을 API 호출 시 Authorization 헤더에 `Bearer {TOKEN}` 형태로 포함시킵니다.

4. Cloud Endpoints 배포 및 검증
- 인증이 추가된 OpenAPI 스펙을 gcloud 명령어로 Endpoints에 배포합니다.
```
gcloud endpoints services deploy openapi.yaml
```
- 배포 후 API 호출 시 서비스 계정 키로 생성한 토큰이 유효하면 인증이 통과되고, 아니면 401 Unauthorized 오류가 반환됩니다.

요약하자면, 서비스 계정 키를 다운로드한 뒤 해당 키로 JWT 또는 OIDC 토큰을 생성하여 Cloud Endpoints가 설정한 인증 방식에 맞게 API 호출 때 토큰을 전달하면 됩니다. Endpoints 쪽에서는 OpenAPI 스펙에 인증 구성을 추가해 토큰을 검증하도록 설정해야 합니다.
Cloud Endpoints는 Google Cloud Platform(GCP)에서 API를 관리하고 보호하는 데 사용되는 서비스입니다.

서비스 계정의 키를 사용하여 Cloud Endpoints에 인증을 추가하는 방법은 다음과 같습니다.

이 과정은 API에 대한 인증을 설정하고, 클라이언트가 API에 접근할 때 적절한 인증 정보를 제공하도록 하는 데 필요합니다.

1. 서비스 계정 생성 1. Google Cloud Console에 로그인 : [Google Cloud Console](https://console.cloud.google.com/)에 로그인합니다.



2. 프로젝트 선택 : 인증을 추가할 API가 포함된 프로젝트를 선택합니다.



3. 서비스 계정 생성 : - 왼쪽 사이드바에서 "IAM 및 관리자"를 클릭한 후 "서비스 계정"을 선택합니다.

- "서비스 계정 만들기" 버튼을 클릭합니다.

- 서비스 계정의 이름과 설명을 입력하고 "만들기"를 클릭합니다.

- 필요한 역할(예: "API 사용자")을 선택하고 "계속"을 클릭합니다.

- "완료"를 클릭하여 서비스 계정을 생성합니다.



2. 서비스 계정 키 생성 1. 서비스 계정 선택 : 생성한 서비스 계정을 클릭합니다.



2. 키 생성 : - "키" 탭으로 이동합니다.

- "키 추가" 버튼을 클릭하고 "새 키 만들기"를 선택합니다.

- JSON 형식을 선택하고 "만들기"를 클릭합니다.

- JSON 파일이 다운로드됩니다.

이 파일은 서비스 계정의 인증 정보를 포함하고 있으므로 안전하게 보관해야 합니다.



3. Cloud Endpoints 설정 1. OpenAPI 문서 작성 : Cloud Endpoints는 OpenAPI 사양을 사용하여 API를 정의합니다.

OpenAPI 문서에 인증 정보를 추가해야 합니다.

예를 들어, 다음과 같이 `securityDefinitions`와 `security` 섹션을 추가합니다.

```yaml swagger: '2.0' info: title: My API description: My API description version: 1.0.0 host: myapi.endpoints.myproject.cloud.goog schemes: - https securityDefinitions: google_id_token: type: "oauth2" authorizationUrl: "https://accounts.google.com/o/oauth2/auth" flow: "implicit" scopes: {} security: - google_id_token: [] paths: /myendpoint: get: summary: "My endpoint" responses: '200': description: "Successful response" ```

2. API 배포 : OpenAPI 문서를 작성한 후, Cloud Endpoints에 API를 배포합니다.

이를 위해 `gcloud` 명령줄 도구를 사용할 수 있습니다.

```bash gcloud endpoints services deploy openapi.yaml ```

4. 클라이언트 애플리케이션에서 인증 사용 1. Google API 클라이언트 라이브러리 설치 : 클라이언트 애플리케이션에서 Google API 클라이언트 라이브러리를 사용하여 인증을 처리합니다.

예를 들어, Python의 경우 다음과 같이 설치할 수 있습니다.

```bash pip install google-auth google-auth-oauthlib ```

2. 서비스 계정 키 사용 : 다운로드한 JSON 파일을 사용하여 인증을 설정합니다.

다음은 Python의 예입니다.

```python from google.oauth2 import service_account from google.auth.transport.requests import Request import requests 서비스 계정 키 파일 경로 SERVICE_ACCOUNT_FILE = 'path/to/service-account.json' 인증 정보 생성 credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=['https://www.googleapis.com/auth/cloud-platform'], ) 액세스 토큰 요청 credentials.refresh(Request()) access_token = credentials.token API 호출 headers = {'Authorization': f'Bearer {access_token}'} response = requests.get('https://myapi.endpoints.myproject.cloud.goog/myendpoint', headers=headers) print(response.json()) ```

5. 테스트 및 검증 API가 올바르게 설정되었는지 확인하기 위해 클라이언트 애플리케이션을 실행하고 API 호출을 테스트합니다.

응답이 예상대로 돌아오는지 확인합니다.

결론 이 과정을 통해 서비스 계정의 키를 사용하여 Cloud Endpoints에 인증을 추가할 수 있습니다.

이를 통해 API에 대한 안전한 접근을 보장하고, 인증된 사용자만 API를 사용할 수 있도록 할 수 있습니다.

작성자: 김하율 [비회원] | 작성일자: 1년 전 2024-12-18 16:52:02
조회수: 161 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.