역할 권장사항으로 최소 권한 적용

역할 권장사항을 사용하면 구성원의 초과 권한을 식별하고 삭제하여 리소스의 보안 구성을 개선할 수 있습니다.

역할 권장사항 개요

역할 권장사항은 추천자가 생성하는 권장사항 유형 중 하나입니다.

각 역할 권장사항은 구성원에게 초과 권한을 부여하는 역할을 삭제하거나 대체할 것을 제안합니다. 규모에 맞게 이러한 권장사항은 구성원에 실제로 필요한 권한만 부여하여 최소 권한의 원칙을 적용하는 데 도움이 됩니다.

추천자는 정책 통계를 사용하여 초과 권한을 식별합니다. 정책 통계는 프로젝트, 폴더, 조직의 권한 사용에 대한 ML 기반 발견 항목입니다.

일부 권장사항은 측면 이동 통계와도 연결됩니다. 이러한 통계로 한 프로젝트의 서비스 계정이 다른 프로젝트의 서비스 계정을 가장하도록 허용하는 역할을 확인할 수 있습니다. 자세한 내용은 측면 이동 통계 생성 방법을 참조하세요.

정책 통계 생성 방법

추천자는 지난 90일 동안 각 구성원이 사용한 권한과 구성원이 보유한 총 권한을 비교하여 정책 통계를 생성합니다. 다음은 구성원이 권한을 사용할 수 있는 몇 가지 방법입니다.

  • 직접: 권한이 필요한 API 호출

    예를 들어 IAM REST API의 roles.list 메서드에는 iam.roles.list 권한이 필요합니다. roles.list 메서드를 호출할 때 iam.roles.list 권한을 사용합니다.

    마찬가지로 리소스의 testIamPermissions 메서드를 호출하면 테스트 중인 모든 권한이 효과적으로 사용됩니다.

  • 간접: Google Cloud Console 사용하여 Google Cloud 리소스와 연동

    예를 들어 Cloud Console에서 변경하는 설정에 따라 다른 권한이 필요한 Compute Engine 가상 머신(VM) 인스턴스를 수정할 수 있습니다. 하지만 Cloud Console에는 기존 설정도 표시되어 compute.instances.get 권한을 필요로 합니다.

    따라서 Cloud Console에서 VM 인스턴스를 편집할 때 compute.instances.get 권한을 사용합니다.

또한 추천자는 구성원이 지난 90일 동안 해당 권한을 사용하지 않았더라도 머신러닝을 사용하여 구성원의 현재 역할에서 향후 필요한 권한을 식별합니다. 자세한 내용은 이 페이지의 정책 통계용 머신러닝을 참조하세요.

일부 IAM 역할 결합에 대해서는 정책 통계가 생성되지 않습니다. 역할 결합에 정책 통계가 없을 수 있는 이유에 대한 자세한 내용은 이 페이지의 가용성을 참조하세요.

정책 통계 관리 방법은 정책 통계 관리를 참조하세요.

정책 통계용 머신러닝

일부 경우에 구성원은 현재 역할에 포함되어 있지만 최근에 사용하지 않은 특정 권한이 필요할 수 있습니다. 추천자는 이러한 권한을 식별하기 위해 정책 통계를 생성할 때 머신러닝(ML) 모델을 사용합니다.

이 머신러닝 모델은 여러 신호 세트에 대해 학습합니다.

  • 관찰된 내역의 동시발생 패턴: 이전에 사용자가 A, B, C 권한을 사용했다는 것은 A, B, C가 어떤 식으로든 관련이 있을 수 있다는 힌트를 제공하며 Google Cloud에서 작업을 수행하는 데 필요하다는 의미입니다. ML 모델이 이 패턴을 자주 관찰하게 되면 다른 사용자가 A와 B 권한을 사용할 때 모델이 사용자에게 C 권한 또한 필요할 것이라고 제안합니다.

  • 역할 정의에 인코딩된 도메인 지식: IAM은 서비스별로 수백 가지의 사전 정의된 역할을 제공합니다. 사전 정의된 역할에 일련의 권한이 포함된다는 것은 이러한 권한들이 함께 부여되어야 한다는 강력한 신호입니다.

이러한 신호 외에도 모델은 단어 임베딩을 사용하여 권한이 어떻게 의미상 유사한지 계산합니다. 의미상 비슷한 권한은 임베딩 후에 서로 '가까워'지고 함께 부여될 가능성이 높습니다. 예를 들어 bigquery.datasets.getbigquery.tables.list는 임베딩 후 서로 매우 가까워집니다.

추천자 머신러닝 파이프라인에 사용된 모든 데이터는 k-익명성을 가집니다. 이는 익명화된 데이터 세트의 개인을 다시 식별할 수 없음을 의미합니다. 이러한 익명성 수준을 달성하기 위해 각 권한 사용 패턴과 관련된 사용자 ID 등의 개인 식별 정보(PII)를 모두 삭제합니다. 그런 다음 Google Cloud 전체에 자주 표시되지 않는 사용 패턴을 모두 삭제합니다. 전역 모델은 이 익명화된 데이터를 대상으로 학습되어 있습니다.

데이터를 내보내지 않고 머신러닝 모델을 학습시키는 머신러닝 프로세스인 제휴 학습을 사용하여 조직마다 전역 모델을 맞춤설정할 수 있습니다.

역할 권장사항 생성 방법

정책 통계에서 구성원에게 역할의 모든 권한이 필요하지 않다고 표시되는 경우 추천자는 역할을 평가하여 역할을 취소할 수 있는지 또는 더 적합한 다른 역할이 있는지 확인합니다. 역할을 취소할 수 있으면 추천자는 역할을 취소하는 역할 권장사항을 생성합니다. 더 적합한 다른 역할이 있으면 추천자는 역할을 추천된 역할로 대체할 역할 권장사항을 생성합니다. 새 커스텀 역할, 기존 커스텀 역할 또는 사전 정의된 역할 1개 이상이 역할로 추천될 수 있습니다. Google 관리 서비스 계정에 대한 권장사항의 경우를 제외하면 역할 권장사항은 구성원의 액세스 수준을 높이는 변경사항을 제안하지 않습니다.

역할 권장사항은 IAM 액세스 제어를 기반으로 생성됩니다. 액세스 제어 목록(ACL) 및 Kubernetes 역할 기반 액세스 제어(RBAC)와 같은 다른 종류의 액세스 제어를 고려하지 않습니다. 다른 유형의 액세스 제어를 사용하는 경우 권장사항을 검토할 때 특히 주의하고 이러한 액세스 제어가 IAM 정책과 어떤 관련이 있는지 고려합니다.

또한 모든 IAM 역할 결합에 대한 역할 권장사항이 생성되지 않습니다. 역할 결합에 역할 권장사항이 없을 수 있는 이유에 대한 자세한 내용은 이 페이지의 가용성을 참조하세요.

역할 권장사항의 새 커스텀 역할

추천자가 특정 역할의 대체 역할을 제안할 때는 언제나 구성원의 요구사항에 더 적합한 것으로 보이는 기존 커스텀 역할 또는 사전 정의된 역할 1개 이상을 제안합니다.

추천자가 조직에서 기존의 사전 정의된 역할 또는 커스텀 역할에 매핑되지 않는 일반적인 권한 사용 패턴을 식별하면 새 프로젝트 수준 커스텀 역할을 만드는 것이 좋습니다. 이 커스텀 역할에는 권장 권한 포함됩니다. 권한을 추가하거나 삭제하여 커스텀 역할 권장사항을 수정할 수 있습니다.

최소 권한 원칙을 최대한 엄격히 적용하려면 새 커스텀 역할을 선택합니다. 추천자는 프로젝트 수준에서 커스텀 역할을 만듭니다. 사용자는 프로젝트의 커스텀 역할을 유지하고 업데이트해야 합니다.

Google 관리 역할을 사용하려면 사전 정의된 역할을 선택합니다. Google Cloud는 권한을 추가하거나 삭제하여 이러한 역할을 정기적으로 업데이트합니다. 이러한 업데이트에 대한 알림을 받으려면 권한 변경 로그에 대한 뉴스 피드를 구독하세요. 사전 정의된 역할을 선택하면 구성원이 적어도 몇 가지 권한은 계속 보유하게 되고 아직까지 사용한 적이 없었던 다수의 권한을 보유하게 될 수도 있습니다.

추천자는 다음과 같은 경우 새 커스텀 역할을 권장하지 않습니다.

  • 폴더 수준 또는 조직 수준 역할에 대한 권장사항입니다.
  • 조직에 이미 100개 이상의 커스텀 역할이 있습니다.
  • 프로젝트에 이미 25개 이상의 커스텀 역할이 있습니다.

또한 추천자에서는 새 커스텀 역할을 프로젝트당 하루 5개 이하, 전체 조직에는 15개 이하로 할 것을 권장합니다.

측면 이동 통계 생성 방법

측면 이동은 한 조직의 여러 프로젝트에서 다른 서비스 계정을 가장할 수 있는 서비스 계정 권한을 의미합니다. 예를 들어 프로젝트 A에서 만든 서비스 계정이 프로젝트 B의 서비스 계정을 가장할 수 있는 권한을 보유할 수 있습니다.

측면 이동을 사용하면 조직의 프로젝트에서 공격자의 측면 이동이 가능해져 내부자 위험이 커질 수 있습니다.

추천자가 다음 기준에 맞는 프로젝트 수준 및 서비스 계정 수준 역할 binding을 식별하여 측면 이동 통계를 생성할 수 있습니다.

  • 역할 결합의 구성원은 해당 프로젝트에서 생성되지 않은 서비스 계정입니다.
  • 이 역할에는 구성원이 서비스 계정을 가장하도록 허용하는 다음 권한 중 하나가 포함됩니다.

    • iam.serviceAccounts.actAs
    • iam.serviceAccounts.getAccessToken
    • iam.serviceAccounts.getOpenIdToken
    • iam.serviceAccounts.implicitDelegation
    • iam.serviceAccounts.signBlob
    • iam.serviceAccounts.signJwt

역할 결합이 이러한 기준에 부합하면 추천자가 해당 결합의 측면 이동 통계를 생성합니다. 이 통계에는 가장할 수 있는 서비스 계정과 지난 90일 동안 가장 권한을 사용했는지 여부 등 서비스 계정의 가장 권한에 대한 정보가 포함됩니다.

추천자가 자체적으로 측면 이동 통계를 사용하여 새 역할 권장사항을 생성하지는 않습니다. 서비스 계정이 가장 권한을 사용 중인 경우 추천자가 안전하게 삭제를 제안할 수 없기 때문입니다. 그러나 역할 권장사항에서 사용되지 않는 권한을 삭제하도록 제안하는 경우 추천자가 측면 이동 통계를 해당 권장사항에 연결합니다. 이러한 연결을 통해 프로젝트에서 사용되지 않는 강력한 가장 권한을 보유한 서비스 계정의 역할 권장사항에 대한 우선순위를 정할 수 있습니다.

측면 이동 통계 관리 방법을 알아보려면 측면 이동 통계 관리를 참조하세요.

가용성

모든 역할 결합에 대해 정책 통계 및 역할 권장사항이 생성되지는 않습니다. 다음 섹션을 읽고 정책 통계 및 권장사항이 생성되는 역할 결합을 이해합니다.

정책 통계 가용성

추천자가 역할 결합에 대한 정책 통계를 생성하려면 다음 조건을 충족해야 합니다.

  • 역할 결합은 프로젝트, 폴더 또는 조직 수준에 있어야 합니다. 추천자는 프로젝트 내의 서비스별 리소스에 부여된 역할의 정책 통계를 생성하지 않습니다.
  • 역할 결합에 조건이 없어야 합니다. 추천자는 조건부 역할 결합의 정책 통계를 생성하지 않습니다.

추천자가 새 역할 결합에 대한 정책 통계를 생성하는 데 최대 10일이 걸릴 수 있습니다.

측면 이동 통계 가용성

추천자가 역할 결합에 대한 측면 이동 통계를 생성하려면 역할 결합이 프로젝트 수준이나 서비스 계정 수준에 존재해야 합니다.

역할 권장사항 가용성

추천자가 역할 결합에 대한 역할 권장사항을 생성하려면 다음 조건을 충족해야 합니다.

  • 역할 결합에 연결된 정책 통계가 있어야 합니다. 이 정책은 권장사항의 기준으로 사용됩니다.
  • 역할 결합은 90일보다 오래되어야 합니다. 이렇게 하면 추천자는 권장사항을 제공할 만큼 충분한 사용 데이터를 확보할 수 있습니다.
  • 역할 결합의 구성원이 Google 관리 서비스 계정이면 역할 결합은 소유자, 편집자 또는 뷰어여야 합니다. 추천자는 다른 역할이 있는 Google 관리 서비스 계정의 역할 권장사항을 생성하지 않습니다. 자세한 내용은 Google 관리 서비스 계정의 역할 권장사항을 참조하세요.

역할 결합에 통계가 없거나 90일 동안 존재하지 않은 경우 Cloud Console의 분석된 권한 열에 아이콘이 표시됩니다.

추천자가 90일보다 오래되고 연결된 통계가 있는 역할 결합의 역할 권장사항을 생성하지 않는 경우가 있습니다. 이는 다음과 같은 이유로 발생할 수 있습니다.

  • 현재 역할보다 적절한 사전 정의된 IAM 역할이 없습니다. 구성원에게 이미 권한이 최소화된 사전 정의된 역할이 부여되었거나 다른 사전 정의된 역할보다 권한이 적은 경우 추천자는 다른 사전 정의된 역할을 추천할 수 없습니다.

    구성원을 위한 커스텀 역할을 만들어 구성원의 권한을 줄일 수 있습니다.

  • 구성원은 Google 관리 서비스 계정이며 기본 역할이 아닙니다. 추천자는 서비스 계정에 기본 역할(소유자, 편집자, 뷰어)이 있는 경우에만 Google 관리 서비스 계정의 역할 권장사항을 생성합니다. 자세한 내용은 Google 관리 서비스 계정의 역할 권장사항을 참조하세요.

  • 프로젝트의 소유자 기본 역할을 가진 다른 구성원이 없습니다. 프로젝트마다 구성원 최소 한 명 이상에게 소유자 역할(roles/owner)이 있어야 합니다. 이 역할이 있는 구성원이 단 한 명이면 추천자는 역할을 취소하거나 대체하는 것을 추천하지 않습니다.

이러한 경우 Cloud Console의 분석된 권한 열에 구성원의 권한 사용량이 표시되지만 권장사항 사용 가능 아이콘은 없습니다.

우선순위 및 심각도

권장사항 우선순위 및 통계 심각도는 권장사항 또는 통계의 긴급성을 이해하고 그에 따라 우선순위를 지정하는 데 도움이 됩니다.

역할 권장사항 우선순위

권장사항은 인식되는 긴급한 수준에 따라 우선순위 수준이 할당됩니다. 우선순위 수준 범위는 P0(가장 높은 우선순위)에서 P4(가장 낮은 우선순위)까지입니다.

IAM 권장사항의 우선순위는 P2 또는 P4입니다. 기본 역할(소유자, 편집자, 뷰어)이 있는 역할 binding에 대한 권장사항의 우선순위는 P2입니다. 기본 역할은 권한이 높으며 이러한 역할에 권장사항을 적용하면 과도하게 부여된 권한을 크게 줄일 수 있으므로 이러한 권장사항은 우선순위가 높습니다. 다른 모든 권장사항의 우선순위는 P4입니다.

gcloud 도구 또는 REST API를 사용하여 권장사항을 나열하면 권장사항의 우선순위 수준을 확인할 수 있습니다.

통계 심각도

통계에는 인식되는 긴급한 수준에 따라 심각도 수준이 할당됩니다. 심각도 수준은 LOW, MEDIUM, HIGH, CRITICAL일 수 있습니다.

정책 통계의 심각도 수준은 LOW 또는 HIGH일 수 있습니다. 기본 역할(소유자, 편집자, 뷰어)이 있는 역할 binding에 대한 통계의 심각도 수준은 HIGH입니다. 기본 역할은 권한이 높으며 이러한 역할에 통계를 지정하면 과도하게 부여된 권한을 크게 줄일 수 있으므로 이러한 통계는 심각도가 높습니다. 다른 모든 통계의 심각도는 LOW입니다.

모든 측면 이동 통계의 심각도는 LOW입니다.

역할 권장사항 적용 방법

추천자는 자동으로 권장사항을 적용하지 않습니다. 대신 사용자가 권장사항을 검토하고 적용하기 또는 닫기를 결정해야 합니다. 역할 권장사항을 검토, 적용, 닫는 방법은 권장사항 검토 및 적용을 참조하세요.

감사 로깅

권장사항을 적용하거나 닫으면 추천자가 로그 항목을 만듭니다. 프로젝트의 권장사항 기록에서 이러한 항목을 보거나 Google Cloud 감사 로그에서 확인할 수 있습니다.

역할 권장사항 하위유형

역할 권장사항은 권장 작업에 따라 여러 하위유형으로 나뉩니다. gcloud 도구 또는 REST API를 사용하는 경우 이러한 하위유형으로 권장사항을 필터링할 수 있습니다.

하위유형 설명
REMOVE_ROLE 구성원의 역할을 삭제하는 권장사항입니다.
REPLACE_ROLE 구성원의 역할을 권한이 낮은 역할로 교체하기 위한 권장사항입니다. 권장되는 대체 역할은 새 커스텀 역할, 기존 커스텀 역할 또는 하나 이상의 사전 정의된 역할일 수 있습니다.
SERVICE_AGENT_WITH_DEFAULT_ROLE Google 관리 서비스 계정의 소유자, 편집자 또는 뷰어 역할을 서비스 계정에 자동으로 부여된 역할로 교체하기 위한 권장사항입니다. 자세한 내용은 Google 관리 서비스 계정에 대한 권장사항을 참조하세요.
SERVICE_AGENT_WITHOUT_DEFAULT_ROLE 권한이 낮은 역할로 Google 관리 서비스 계정의 소유자, 편집자 또는 뷰어 역할을 교체하기 위한 권장사항입니다. 자세한 내용은 Google 관리 서비스 계정 권장사항을 참조하세요.

Google 관리 서비스 계정의 역할 권장사항

Google 관리 서비스 계정의 경우, 추천자는 기본 역할(소유자, 편집자, 뷰어)이 있는 역할 결합의 권장사항만 제공합니다.

Google 관리 서비스 계정의 권장사항은 권장사항 하위유형 2가지로 나뉩니다.

SERVICE_AGENT_WITH_DEFAULT_ROLE

일부 Google 관리 서비스 계정은 생성 시 Google Cloud 서비스가 제대로 작동하도록 서비스 에이전트 역할이 자동으로 부여됩니다. 이 역할을 기본 역할(소유자, 편집자, 뷰어)로 바꾸면 추천자는 서비스 에이전트 역할이 기본 역할에 없는 권한을 가진 경우에도 원래 서비스 에이전트 역할을 복원하여 초과 권한을 삭제하도록 제안할 수 있습니다. 이러한 권장사항에는 SERVICE_AGENT_WITH_DEFAULT_ROLE 하위유형이 있습니다. 이는 모든 Google Cloud 서비스가 제대로 작동하면서 초과 권한을 안전하게 삭제하는 데 도움이 됩니다.

SERVICE_AGENT_WITH_DEFAULT_ROLE 권장사항은 현재 역할에 없는 권한을 가진 역할을 제안할 수 있는 유일한 권장사항 유형입니다.

SERVICE_AGENT_WITHOUT_DEFAULT_ROLE

생성 시 Google 관리 서비스 계정에 자동으로 역할이 부여되지 않은 경우 서비스 계정의 권장사항은 서비스 계정이 사용하는 권한을 기반으로만 결정됩니다. 이러한 권장사항에는 SERVICE_AGENT_WITHOUT_DEFAULT_ROLE 하위유형이 있습니다.

역할 권장사항 예시

다음 예시는 사용자에 대한 권장사항 유형을 보여줍니다.

기존 역할 취소

사용자 my-user@example.com에게 프로젝트에 대한 브라우저 역할이 부여되었습니다. 브라우저 역할에는 사용자가 프로젝트의 리소스를 볼 수 있게 하는 6개의 권한이 있습니다. 그러나 지난 90일 동안 my-user@example.com은 어떤 리소스도 보지 못했습니다.

따라서 추천자는 my-user@example.com에서 브라우저 역할을 취소할 것을 제안하는 역할 권장사항을 생성합니다.

기존 역할 바꾸기

서비스 계정에 프로젝트에 대한 편집자 역할(roles/editor)이 부여되었습니다. 이 기본 역할에는 3,000개가 넘는 권한이 포함되며 프로젝트에 대한 광범위한 액세스 권한을 부여합니다. 그러나 지난 90일 동안 서비스 계정은 이러한 권한 중 일부만 사용했습니다.

따라서 추천자는 편집자 역할을 취소하고 2개의 다른 역할 조합으로 대체하여 수천 개의 초과 권한을 삭제할 것을 제안하는 역할 권장사항을 생성합니다.

커스텀 역할 만들기

사용자 my-user@example.com에게 프로젝트에 대한 Cloud Trace 관리자 역할(roles/cloudtrace.admin)이 부여되었습니다. 이 역할에는 10개가 넘는 권한이 포함되어 있지만 정책 통계는 지난 90일 동안 my-user@example.com이 이러한 권한 중 4개만 사용했음을 나타냅니다.

따라서 추천자는 my-user@example.com이 실제로 사용한 권한만 포함하는 커스텀 역할을 만들도록 제안하는 역할 권장사항을 생성합니다.

역할 권장사항은 기존 역할을 Cloud Trace 사용자 역할(roles/cloudtrace.user)로 대체하는 다른 옵션도 제안합니다. 이 사전 정의된 역할에는 Cloud Trace 관리자 역할보다 약간 적은 권한이 포함됩니다.

머신러닝에서 제안하는 권한으로 역할 대체

서비스 계정에 프로젝트에 대한 편집자 역할(roles/editor)이 부여되었습니다. 이 기본 역할에는 3,000개가 넘는 권한이 포함되며 프로젝트에 대한 광범위한 액세스 권한을 부여합니다. 그러나 정책 통계에서는 서비스 계정이 지난 90일 동안 10개 미만의 권한을 사용한 것으로 나타납니다.

정책 통계는 향후 서비스 계정에 필요할 수 있는 몇 가지 권한을 강조표시합니다. 추천자는 머신러닝을 사용하여 이러한 권한을 식별했습니다.

추천자는 편집자 역할을 취소하고 스토리지 객체 관리자 역할(roles/storage.objectAdmin)로 대체할 것을 제안하는 역할 권장사항을 생성합니다. 스토리지 객체 관리자 역할은 Cloud Storage 버킷에서 객체를 관리할 수 있는 전체 권한을 부여합니다. 이렇게 변경하면 수천 개의 초과 권한이 삭제되지만, 서비스 계정에서 사용한 권한 및 향후 서비스 계정에 필요할 수 있는 권한도 모두 포함됩니다.

추천자는 권한 사용이 아닌 추천자의 머신러닝을 기반으로 추가된 권한을 식별하도록 머신러닝 아이콘을 사용합니다. 이 예시에서는 머신러닝을 기반으로 resourcemanager.projects.get 권한이 추천되었습니다.

다음 단계