Google Cloud 프로젝트에 대한 액세스 취소

이 문서에서는 Google Cloud 프로젝트에 대한 사용자의 액세스를 취소하기 위한 권장사항, 시나리오, 절차를 설명합니다. 이 문서를 참조하여 일관되고 신속하게 액세스 권한을 취소할 수 있는 정책과 절차를 마련하시기 바랍니다.

Google Cloud 리소스를 관리하다 보면 누군가의 액세스 권한을 삭제해야 할 때가 있습니다. 직원이 퇴사하거나, 도급업자와의 계약이 종료되거나, 함께 작업하던 사람이 다른 프로젝트 팀으로 옮길 때, 리소스에 대한 불필요한 액세스를 철저히 취소하기 위해 처리해야 하는 몇 가지 사항이 있습니다.

이러한 프로세스 중 일부는 선택사항입니다. 보안 요건, 사용 중인 제품, 액세스가 취소되는 사람에 대한 신뢰도에 따라 이러한 단계 중 어떤 것을 실행할지 결정해야 합니다.

프로젝트 설정 권장사항

설정 시점에 충분히 깊이 생각해서 선택함으로써 프로젝트에서 사용자 액세스 권한을 효율적으로 취소할 수 있는 능력을 개선할 수 있습니다.

사용자 계정을 기존 ID 공급업체와 페더레이션

사용자 계정을 기존 ID 공급업체와 페더레이션할 때 사용자 계정의 상태를 동기화할 수 있습니다. ID 공급업체에서 사용자 계정을 삭제하면 Cloud ID의 사용자 ID도 삭제되고 허용 정책을 통해 사용자가 더 이상 Google Cloud 리소스에 액세스할 수 없습니다.

자세한 내용은 Google Cloud와 외부 ID 공급업체의 페더레이션을 위한 권장사항을 참조하세요.

ID 관련 권장사항은 계정 및 조직 계획을 위한 권장사항을 참조하세요.

Google 그룹스를 사용하여 프로젝트 리소스에 대한 액세스 관리

Google 그룹스를 사용하면 팀 멤버십이나 기타 기준에 따라 사용자를 구성할 수 있습니다. Google 그룹스를 만든 후에는 그룹을 기반으로 Google Cloud 프로젝트 및 리소스에 대한 액세스 권한을 할당할 수 있습니다. 그런 다음 사용자가 다른 팀으로 이동할 때 사용자 계정을 다른 그룹으로 이동하기만 하면 이전 그룹에 대한 허용 정책에서 부여한 액세스 권한이 자동으로 삭제됩니다.

자세한 내용은 Google Cloud 콘솔에서 그룹 관리조직에서 그룹 만들기를 참조하세요.

OS 로그인 사용

사용자의 Linux 계정을 Google ID에 연결할 수 있도록 메타데이터 기반 SSH 키 대신 OS 로그인을 사용합니다. 사용자 계정을 삭제하면 키가 자동으로 취소됩니다.

자세한 내용은 OS 로그인 설정을 참조하세요.

외부 사용자 계정의 액세스 제한

외부 사용자에게 프로젝트에 대한 액세스 권한을 부여하지 마세요. 이러한 사용자 계정의 수명 주기를 제어할 수 없기 때문입니다. 외부 사용자를 제한하려면 iam.allowedPolicyMemberDomains 목록 제약조건을 사용합니다.

자세한 내용은 도메인별 ID 제한을 참조하세요.

Cloud SQL에 연결할 때 Cloud SQL 인증 프록시 사용

Cloud SQL 인증 프록시를 사용하면 승인된 네트워크와 같은 IP 기반 액세스 제어 대신 IAM 권한을 기반으로 Cloud SQL에 워크로드를 연결할 수 있습니다. Cloud SQL 인증 프록시는 사용자 또는 서비스 계정의 사용자 인증 정보를 사용하고 Cloud SQL 인스턴스에 승인된 SSL/TLS 레이어로 연결을 래핑하여 연결 유효성을 검사합니다. 자체 관리형 SSL/TLS 인증서 또는 승인된 네트워크를 사용하는 것보다 더 안전한 연결 방법입니다. 또한 사용자 계정에 대한 권한을 취소하거나 사용자 계정을 완전히 삭제할 때 Cloud SQL에 대한 액세스 권한을 삭제할 수 있도록 합니다.

VM에 대한 액세스 제한

Compute Engine Google Kubernetes Engine에서 사용하는 것과 같은 가상 머신은 공격에 취약할 가능성이 큽니다. 누군가 VM에 한 번이라도 액세스한 적이 있다면(특히 루트 또는 관리자 액세스 권한으로 액세스), 그런 사람이 VM을 수정하지 않았고 다음에도 자신의 액세스를 허용하려는 목적으로 백도어를 남기지 않았으리라고 보장하기는 극히 어려운 일입니다. 따라서 반드시 액세스해야 할 분명하고도 구체적인 필요가 있는 사람에게만 VM 액세스를 제한적으로 허용하세요.

기본적으로 프로젝트 편집자와 소유자는 프로젝트의 모든 VM에 대한 관리 액세스 권한이 있습니다. 이 기본 액세스를 삭제하고 VM 액세스에 최소 권한의 원칙을 사용합니다.

VM 로그인 액세스 권한을 부여하기 전에 어떤 태스크에 액세스가 필요한지 생각해보고 가능한 경우 다른 니즈를 충족할 방법이 있는지 확인합니다. 예를 들어 코드를 배포하기 위해 모든 개발자에게 VM 로그인 액세스 권한을 부여하는 대신 Chef, Puppet, Salt를 사용하여 배포를 관리하는 것을 고려하세요.

사용자 인증 정보 순환 준비

프로젝트 수준에서 사용자 인증 정보를 중단 없이 수월하게 순환할 수 있도록 프로젝트와 리소스를 설계하세요. 이러한 사용자 인증 정보는 서비스 계정 키, OAuth 클라이언트 보안 비밀, 애플리케이션별 암호(예: 데이터베이스 루트 비밀번호)와 같이 프로젝트 자체에 연계된 암호입니다. 자세한 내용은 보안 침해된 Google Cloud 사용자 인증 정보 처리를 참조하세요.

API 키 제한

API 키를 만들고 관리할 때, 이러한 키를 사용할 수 있는 웹사이트, IP 주소, 앱의 집합을 제한하세요. 뷰어 또는 API 키 관리자와 같은 역할을 가진 사용자 계정은 프로젝트의 API 키를 볼 수 있으므로 결제 액세스를 취소하려면 제한되지 않은 키를 순환하거나 삭제해야 합니다. 자세한 내용은 API 키 보안을 참조하세요.

추가 권장사항

이 문서에 설명된 권장사항 외에 다음 권장사항도 검토하세요.

Google Cloud 프로젝트에 대한 액세스 취소 시나리오

프로젝트 설정 권장사항에 나열된 권장사항을 구현한 경우 다음 표에는 액세스 권한을 취소하는 방법이 요약되어 있습니다.

시나리오 액세스 옵션 취소
직원이 퇴사합니다. 자동 사용자 프로비저닝을 사용하여 Cloud ID 또는 Google Workspace 간에 페더레이션을 설정하면 액세스 취소가 자동으로 발생할 수 있습니다.

권장사항을 따르지 않아 외부 사용자 ID에 리소스에 대한 액세스 권한을 부여한 경우 프로젝트와 리소스에서 ID를 수동으로 삭제해야 합니다.
직원이 직무를 변경합니다. 팀 그룹에서 직원을 삭제합니다.
계약이 종료됩니다. 자동 사용자 프로비저닝을 사용하여 Cloud ID 또는 Google Workspace 간에 페더레이션을 설정하면 액세스 취소가 자동으로 발생할 수 있습니다.

권장사항을 따르지 않아 외부 사용자 ID에 리소스에 대한 액세스 권한을 부여한 경우 프로젝트와 리소스에서 ID를 수동으로 삭제해야 합니다.
계정이 도용되었습니다. 자세한 내용은 보안 침해된 Google Cloud 사용자 인증 정보 처리를 참조하세요.

액세스 취소

프로젝트 설정을 적절하게 했다면 다음 프로세스로 어떤 사람에게 주어진 액세스 권한을 효율적으로 취소할 수 있습니다.

사용자가 액세스할 수 있는 리소스를 확인하려면 정책 분석자를 사용하세요. 자세한 내용은 IAM 정책 분석을 참조하세요.

ID 공급업체에서 사용자 계정 삭제

사용자가 조직을 떠나고 Cloud ID 또는 Google Workspace를 ID 공급업체에 페더레이션하면 자동 사용자 프로비저닝으로 액세스 취소가 자동으로 발생할 수 있습니다.

다른 그룹으로 계정 이동

사용자가 역할을 변경하는 경우 현재 Google 그룹스에서 사용자 계정을 삭제합니다. Cloud ID 또는 Google Workspace를 ID 공급업체와 페데레이션하여 그룹 멤버십을 관리한 경우 액세스 취소가 자동으로 발생할 수 있습니다.

프로젝트 멤버십에서 사용자 계정 삭제

  1. Google Cloud 콘솔에서 IAM 권한 페이지로 이동합니다.

    IAM 권한

  2. 사용자 계정을 삭제할 프로젝트를 선택합니다.

  3. 구성원 목록에서 삭제하려는 사용자 계정이 포함된 행 옆에 있는 체크박스를 클릭한 후 삭제를 클릭합니다.

프로젝트 사용자 인증 정보 순환

서비스 계정 키 순환

서비스 계정 키를 사용하여 서비스 계정에 인증하려면 키를 순환해야 합니다. 또한 해당 사용자가 소스 코드 저장소 또는 애플리케이션 구성과 같은 Google Cloud 도구 외부의 어디선가 서비스 계정 키에 대한 액세스 권한을 가지고 있었을 경우를 고려하세요.

  1. Google Cloud 콘솔에서 API 사용자 인증 정보 페이지로 이동합니다.

    API 사용자 인증 정보

  2. 수정할 서비스 계정의 이름을 클릭합니다.

  3. 탭에서 키 추가를 클릭합니다.

  4. 새 키 만들기를 클릭합니다.

  5. 만들려는 키 유형을 선택합니다. 대부분의 경우 JSON을 사용하는 것이 좋지만 종속된 코드와의 하위 호환성을 위해 P12를 사용할 수 있습니다.

  6. 만들기를 클릭합니다. 새 키를 포함한 파일이 브라우저를 통해 자동으로 다운로드됩니다. 이 키가 필요한 모든 애플리케이션에 키를 배포합니다.

  7. 새로운 키가 예상대로 작동하는지 확인한 후, 사용자 인증 정보 페이지로 돌아가고 해당 서비스 계정과 연결된 이전 키를 삭제합니다.

OAuth 클라이언트 ID 보안 비밀 순환

OAuth 클라이언트 ID 암호로는 프로젝트에 직접 액세스할 수 없습니다. 하지만 공격자가 OAuth 클라이언트 ID 보안 비밀을 알고 있으면 애플리케이션을 스푸핑하여 악성 애플리케이션에서 사용자의 Google 계정에 대한 액세스를 요청할 수 있습니다.

액세스 권한이 취소되는 사람이 소스 코드 저장소, 애플리케이션 구성에서 또는 IAM 역할을 통해 보안 비밀에 액세스한 적이 있다면 OAuth 클라이언트 ID 보안 비밀을 순환해야 할 수 있습니다.

  1. Google Cloud 콘솔에서 API 사용자 인증 정보 페이지로 이동합니다.

    API 사용자 인증 정보

  2. 수정하려는 OAuth 2.0 클라이언트 ID의 이름을 클릭합니다.

  3. 클라이언트 ID 페이지에서 보안 비밀 재설정을 클릭합니다.

  4. 확인 대화상자에서 재설정을 클릭하여 이전 암호를 즉시 취소하고 새 암호를 설정합니다. 이에 따라 활성 사용자는 다음 요청 시 다시 인증해야 합니다.

  5. 새 암호가 필요한 애플리케이션에 새 암호를 배포합니다.

API 키 순환

API 키로는 프로젝트 또는 사용자의 데이터에 액세스할 수 없지만, Google이 누구에게 API 요청 비용을 청구하는지를 관리할 수 있습니다. 뷰어 또는 API 키 관리자와 같은 역할을 가진 사용자 계정은 프로젝트의 API 키를 볼 수 있습니다. 제한되지 않은 키가 있는 경우 프로젝트에 대한 어떤 사람의 액세스 권한을 취소할 때 이러한 키를 삭제하거나 다시 생성해야 합니다.

  1. Google Cloud 콘솔에서 API 사용자 인증 정보 페이지로 이동합니다.

    API 사용자 인증 정보

  2. 수정하려는 API 키의 이름을 클릭합니다.

  3. 키 재생성을 클릭합니다.

  4. 대화상자에 새로 생성된 키가 표시됩니다. 바꾸고 싶은 키를 사용하는 모든 애플리케이션에 이 키를 배포합니다.

  5. 새로운 키로 애플리케이션이 예상대로 작동하는지 확인한 후, 사용자 인증 정보 페이지로 돌아가고 이전의 제한되지 않은 키를 삭제합니다.

VM에 대한 액세스 취소

액세스를 취소하려는 사람이 프로젝트 VM에 대한 로그인 액세스 권한이 없다면 이 단계를 건너뛰어도 됩니다.

  1. 그 사람이 액세스 권한을 가졌던 모든 프로젝트 수준 SSH 키를 삭제합니다.

  2. 그 사람이 SSH 액세스 권한을 가졌던 각각의 VM에서 모든 인스턴스 수준 키를 삭제합니다.

  3. 로그인 액세스 권한을 가졌던 모든 VM에서 그 사람의 계정을 삭제합니다.

  4. 그 사람이 VM에 대한 백도어 액세스를 제공하기 위해 설치했을 수 있는 의심스러운 애플리케이션이 있는지 확인합니다. VM에서 실행 중인 코드의 보안에 대해 확신할 수 없는 경우, 해당 코드를 다시 만들고 소스에서 필요한 애플리케이션을 다시 배포합니다.

  5. 계획하거나 예상한 구성에서 VM 방화벽 설정이 변경되지 않았는지 확인합니다.

  6. 커스텀 기본 이미지에서 새 VM을 만드는 경우 새로운 VM의 보안을 훼손하는 방식으로 기본 이미지가 수정되지는 않았는지 확인합니다.

Cloud SQL 데이터베이스에 대한 액세스 취소

프로젝트에서 Cloud SQL 리소스를 사용하지 않는 경우에는 이 단계를 건너뛰어도 됩니다.

  1. Google Cloud 콘솔에서 SQL 인스턴스 페이지로 이동합니다.

    SQL 인스턴스

  2. 액세스 권한을 취소하려는 데이터베이스의 인스턴스 ID를 클릭합니다.

  3. 왼쪽 메뉴에서 연결을 클릭합니다.

  4. 승인된 네트워크 아래의 IP 주소 목록과 App Engine 승인 아래의 앱 목록이 예상한 바와 일치하는지 확인합니다. 액세스 권한을 취소하려는 사람이 여기에 나열된 네트워크 또는 애플리케이션에 대한 액세스 권한을 가진 경우 그 사람은 이 데이터베이스에 액세스할 수 있습니다.

  5. 왼쪽 메뉴에서 사용자를 클릭합니다.

  6. 그 사람이 액세스 권한을 가졌던 모든 사용자 계정의 비밀번호를 삭제하거나 변경합니다. 이 사용자 계정에 의존하는 모든 애플리케이션을 반드시 업데이트해야 합니다.

App Engine 다시 배포

기본적으로 App Engine 앱은 연결된 프로젝트의 편집자인 서비스 계정에 액세스할 수 있습니다. App Engine 요청 핸들러는 새로운 VM 만들기, Cloud Storage의 데이터 읽기 또는 수정과 같은 작업을 수행할 수 있습니다. App Engine에 코드를 배포할 수 있는 사람은 이 서비스 계정을 사용하여 프로젝트로의 백도어를 열 수 있습니다. 배포한 앱의 코드 무결성이 걱정될 경우 버전 제어 시스템에서 양호한 상태로 알려진 이미지로 (모든 모듈을 포함하여) 앱을 다시 배포할 수도 있습니다.

권한이 삭제되었는지 확인

Google Cloud CLI에서 search-all-iam-policies 메서드를 실행하여 특정 사용자 계정이 액세스할 수 있는 모든 리소스를 찾습니다. 예를 들어 사용자에게 리소스 액세스 권한이 있는지 확인하려면 다음을 실행합니다.

gcloud asset search-all-iam-policies --scope='organizations/ORGANIZATION_ID --query='policy:IDENTITY'

각 항목의 의미는 다음과 같습니다.

  • ORGANIZATION_ID는 조직 번호입니다.
  • IDENTITY는 사용자 ID(예: 이메일 주소)입니다.

다음 단계