Post

만료기간이 있는 Service Account key생성

만료기간이 있는 Service Account key생성

*만료기간이 있는 Service Account key생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from google.cloud import iam_credentials_v1
import datetime
import json

def create_service_account_key(project_id, service_account_email, key_output_file):
    """
    GCP 서비스 계정 키 파일을 생성하고 저장합니다.
    
    Args:
        project_id (str): GCP 프로젝트 ID.
        service_account_email (str): 서비스 계정 이메일.
        key_output_file (str): 키 파일을 저장할 경로.
    
    Returns:
        None
    """
    # IAM Credentials 클라이언트 초기화
    client = iam_credentials_v1.IAMCredentialsClient()

    # 요청 구성
    name = f"projects/-/serviceAccounts/{service_account_email}"
    
    try:
        # 서비스 계정 키 생성
        key_response = client.generate_access_token(
            name=name,
            delegates=[],
            scope=["https://www.googleapis.com/auth/cloud-platform"],
            lifetime=datetime.timedelta(days=365)  # 365일 동안 유효
        )
        access_token = key_response.access_token

        # 키를 파일에 저장
        with open(key_output_file, "w") as f:
            json.dump({"access_token": access_token}, f)

        print(f"키 파일이 '{key_output_file}'에 저장되었습니다.")
    except Exception as e:
        print(f"키 생성 중 오류 발생: {e}")

# 실행 예제
if __name__ == "__main__":
    PROJECT_ID = "your-project-id"  # GCP 프로젝트 ID
    SERVICE_ACCOUNT_EMAIL = "your-service-account@your-project-id.iam.gserviceaccount.com"
    KEY_OUTPUT_FILE = "service-account-key.json"

    create_service_account_key(PROJECT_ID, SERVICE_ACCOUNT_EMAIL, KEY_OUTPUT_FILE)
    

참고

This post is licensed under CC BY 4.0 by the author.