안녕하세요,

베스핀글로벌 GCP Support팀입니다.


이번 아티클에서는 주제로 "GCE 인스턴스 Service Account의 권한 제한하는 방법"을 다루고자 합니다.



Default SA가 아닌 별도 SA 사용하기


기본적으로 GCE 인스턴스는 생성 시 별도 SA(Service Account)를 지정하지 않는다면, Compute Engine default SA를 사용하게 됩니다. Compute Engine default SA에 IAM 권한을 추가할 경우, 기본 SA를 사용하는 모든 GCE 인스턴스에 해당 권한이 추가 되게 되어 보안 상 문제가 될 수 있습니다.


따라서 GCE 인스턴스 생성 시 SA에 Compute Engine Default SA를 사용하기 보다는 최소 권한 형태의 별도 SA를 생성하여 사용하도록 권장 됩니다.

아래 방법을 사용하여 사용자 관리형 서비스 계정을 사용하는 VM을 만들 수 있습니다.


1) 사용하고자 하는 권한을 부여한 SA를 생성합니다.

GCP Console > IAM & Admin > Service Accounts > Create Service Account



아래와 같이 SA가 생성되었음을 확인했습니다. 이제 기존 Compute Engine default SA를 사용 중인 인스턴스의 SA를 교체할 수 있습니다.



2) 기존에 생성한 GCE 인스턴스가 Compute Engine default SA를 사용하고 있음을 확인합니다.

Compute Engine > VM instances > VM Details > API and identity management



3) Edit > Identity and API access에서 SA를 생성한 SA로 변경합니다.

* SA를 변경하는 것은 해당 VM 인스턴스가 중단된 상태여야 가능합니다.



위 방식대로 SA 변경을 통해 인스턴스의 SA에 제한된 권한만 추가하여 사용할 수 있습니다.

* 만약 기존 VM에 다른 GCP 서비스로 호출되는 상황이라면, 다른 인스턴스에서 정상적으로 호출 되는지 검증하신 후 적용하시길 권고 드립니다.



Default SA의 Access Scope 설정


Compute Enigne Default SA를 사용하는 경우 VM이 접근할 수 있는 Access Scope을 설정할 수 있습니다.

Access Scope은 아래와 같이 3가지 옵션이 존재합니다.

1. Allow default access : Default로 설정된 값으로 Stroage API에 Read Only, Logging 및 Monitoring API에 Write Only 등이 적용된 제한된 API 접근 범위 설정입니다.

2. Allow full access to all Cloud APIs : 모든 API에 제한 없이 접근 할 수 있도록 설정하는 범위 설정입니다.(보안 상 가장 취약한 설정입니다.)

3. Set access for each API : 사용자가 개별 API 별 접근 범위를 커스텀하게 설정할 수 있습니다. 


이 중 3. Set access for each API를 선택하여 해당 VM이 꼭 필요한 API만 접근할 수 있도록 설정하도록 권고 드립니다.



참조문서


[1] 사용자 관리형 서비스 계정을 사용하는 VM 만들기

https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#best_practices

[2]  Compute Engine Default 서비스 계정

https://cloud.google.com/compute/docs/access/service-accounts#default_service_account



관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.


감사합니다.