안녕하세요,
베스핀글로벌 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에 문의해 주시기 바랍니다.
감사합니다.