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

이 페이지에서는 IAM 추천자에 대한 개요를 제공합니다. IAM 추천자는 구성원에게 실제로 필요한 권한만 부여하여 최소 권한 원칙을 적용하는 데 도움이 됩니다.

IAM 추천자 작동 방식

IAM은 추천자를 사용하여 프로젝트 수준 역할 부여를 각 구성원이 지난 90일 동안 사용한 권한과 비교합니다. 프로젝트 수준 역할을 구성원에게 부여하고 구성원이 역할의 권한을 일부만 사용하는 경우 IAM 추천자는 역할을 취소하도록 추천할 가능성이 높습니다. 필요하다면 IAM 추천자는 더 낮은 권한의 역할을 대체 역할로 추천합니다. IAM 추천자는 구성원의 액세스 수준을 높이는 변경사항을 제안하지 않습니다.

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

IAM 추천자는 자동으로 권장사항을 적용하지 않습니다. 대신 사용자는 각 권장사항을 검토하고 권장사항을 적용하거나 닫아야 합니다.

IAM 추천자는 프로젝트 수준에서 작성된 역할 부여와 최소 90일 동안 존재한 역할 부여만 평가합니다. 다음 항목은 평가하지 않습니다.

  • 폴더 또는 조직 수준에서 역할 부여
  • 프로젝트 수준보다 낮은 역할 부여 즉, 프로젝트 내의 서비스별 리소스에 대한 역할 부여
  • 조건부 역할 부여
  • Google 관리 서비스 계정에 대한 역할 부여
  • IAM과 별도의 액세스 제어

각 구성원이 사용하는 권한

IAM 추천자는 권장사항을 만들기 위해 지난 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) 모델을 사용합니다.

IAM 추천자의 머신러닝 모델은 여러 신호에 대해 학습합니다.

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

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

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

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

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

통계

권장사항은 IAM 통계 한 개 이상을 기반으로 생성됩니다. IAM 정책 통계는 프로젝트 내 권한 사용에 대한 ML 기반 발견 항목입니다.

일부 통계는 권장사항으로 연결되며 관련 권장사항의 증거를 제공합니다. 하지만 권장사항과 별개로 통계를 사용할 수 있습니다. 통계 사용 방법은 정책 통계 사용을 참조하세요.

감사 로깅

권장사항을 적용하거나 닫으면 IAM 추천자가 로그 항목을 만듭니다. 이러한 항목은 IAM 추천자에서 보거나 Google Cloud 감사 로그에서 볼 수 있습니다.

기타 액세스 제어 유형

일부 Google Cloud 서비스는 IAM과 별개로 액세스 제어를 제공합니다. 예를 들어 Cloud Storage는 액세스제어 목록(ACL)을 제공하며 Google Kubernetes Engine(GKE)은 역할 기반 액세스 제어(RBAC)를 지원합니다.

IAM 추천자는 IAM 액세스 제어만 분석합니다. 다른 유형의 액세스 제어를 사용하는 경우 권장사항을 검토할 때 특히 주의하고 이러한 액세스 제어가 IAM 정책과 어떤 관련이 있는지 고려합니다.

권장사항 검토

Cloud Console에서 권장사항을 클릭하면 Cloud Console에 색상 및 기호로 구분된 권한 목록을 표시됩니다. 이 목록은 권장사항을 적용할 때 구성원의 권한이 어떻게 변경되는지를 나타냅니다.

각 색상 및 기호와 관련된 권한 유형은 다음과 같습니다.

  • 기호가 없는 회색: 구성원의 현재 역할과 권장 역할에 모두 포함되어 있는 권한입니다.

  • 마이너스 기호가 있는 빨간색: 구성원의 현재 역할에는 있지만 구성원이 지난 90일 동안 사용하지 않았기 때문에 권장 역할에 없는 권한입니다.

  • 더하기 기호가 있는 녹색: 구성원의 현재 역할에 암시적으로 포함되어 있지만 현재 액세스 수준을 유지하려면 권장 역할에 명시적으로 포함되어야 하는 권한입니다.

    이 유형의 권한은 기본 역할을 대체할 때만 표시됩니다. Cloud Storage 및 BigQuery를 포함한 일부 Google Cloud 서비스는 기본 역할을 가진 모든 구성원에게 암시적으로 추가 권한을 제공합니다. 구성원이 지난 90일 동안 이러한 암시적 권한을 사용한 경우 권장 역할에는 구성원이 기존 액세스 권한을 유지할 수 있도록 해당 명시적 권한이 포함됩니다. IAM 추천자는 구성원에게 없는 권한을 절대 추가하지 않습니다.

  • 파란색 머신러닝 아이콘: 구성원의 현재 역할과 권장 역할에 모두 포함되어 있는 권한입니다. 이는 구성원이 지난 90일 동안 권한을 사용한 적이 있기 때문이 아니라, 추천자가 머신러닝을 통해 향후 이러한 권한이 필요하다고 판단했기 때문입니다. 이 페이지에서는 ML이 제안한 권한을 볼 수 있는 시나리오의 예시를 보여줍니다.

커스텀 역할 권장사항

IAM 추천자가 기존 역할의 대체 역할을 제안할 때는 언제나 구성원의 요구사항에 더 적합한 것으로 보이는 사전 정의된 역할을 제안합니다. 경우에 따라 권장 권한 포함하는 새 커스텀 역할을 만들 수도 있습니다. 권한을 추가하거나 삭제하여 커스텀 역할 권장사항을 수정할 수 있습니다.

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

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

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

  • 조직에 이미 100개 이상의 커스텀 역할이 있습니다.
  • 프로젝트에 이미 25개 이상의 커스텀 역할이 있습니다.

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

역할 권장사항 예시

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

기존 역할 취소

사용자 fuyo@example.com에게 프로젝트의 커스텀 역할이 부여되었습니다. 커스텀 역할에는 하나의 권한 iam.serviceAccounts.actAs가 포함되어 fuyo@example.com에 서비스 계정 역할을 할 수 있는 기능을 부여합니다. 그러나 지난 90일 동안 fuyo@example.com은 해당 프로젝트에서 서비스 계정 역할을 하지 않았습니다.

따라서 IAM 추천자는 fuyo@example.com의 커스텀 역할을 취소할 것을 제안합니다.

기존 역할 바꾸기

서비스 계정에 프로젝트에 대한 소유자 역할(roles/owner)이 부여되었습니다. 이 기본 역할에는 2,500개가 넘는 권한이 포함되며 거의 무제한으로 프로젝트에 대한 액세스 권한을 부여합니다. 그러나 지난 90일 동안 서비스 계정은 권한을 몇백 개만 사용했습니다.

따라서 IAM 추천자는 소유자 역할을 취소하고 4개의 다른 역할 조합으로 대체하여 과도하게 부여된 수천 개의 권한을 삭제할 것을 제안합니다.

커스텀 역할 만들기

사용자 nelson@example.com에게 프로젝트에 대한 BigQuery 데이터 뷰어 역할(roles/bigquery.dataViewer)이 부여되었습니다. 이 역할에는 10개가 넘는 권한이 포함되어 있지만 지난 90일 동안 nelson@example.com은 이러한 권한 중 3개만 사용했습니다.

따라서 IAM 추천자는 nelson@example.com이 실제로 사용한 권한만 포함하는 커스텀 역할을 만드는 것을 제안합니다.

또한 IAM 추천자는 기존 역할을 BigQuery 메타데이터 뷰어 역할(roles/bigquery.metadataViewer)로 대체하는 또 다른 옵션을 제안합니다. 이 사전 정의된 역할에는 BigQuery 데이터 뷰어 역할보다 약간 적은 권한이 포함됩니다.

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

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

따라서 IAM 추천자는 편집자 역할을 취소하고 이를 Storage 객체 관리자 역할(roles/storage.objectAdmin)로 대체할 것을 제안하여 Cloud Storage 버킷에서 객체를 완전히 관리할 수 있는 권한을 부여합니다. 이 변경으로 인해 수천 개의 권한이 제거됩니다.

이 역할에는 서비스 계정이 지난 90일 동안 사용하지 않은 편집자 역할의 여러 권한이 포함됩니다. 그러나 머신러닝을 기반으로 IAM 추천자는 향후 서비스 계정에 이러한 권한이 필요할 것으로 예측합니다.

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

권장사항 사용 가능 여부

Cloud Console에서 IAM 페이지는 프로젝트의 모든 구성원을 표시하고 각 구성원이 프로젝트에 대해 갖는 역할을 나열합니다. 또한 각 역할에 권장사항의 사용 가능 여부를 나타냅니다.

권장사항이 있으면 Cloud Console에 권장사항 사용 가능 아이콘이 표시됩니다. 이 아이콘은 구성원에게 필요하지 않을 수 있는 권한이 있음을 나타냅니다. 아이콘을 클릭하여 권장사항을 검토하고 적용합니다.

권장사항을 사용할 수 없는 경우 Cloud Console에 권장 사항 사용 불가 아이콘이 표시됩니다. 이유를 확인하려면 아이콘 위에 마우스 포인터를 올려놓습니다.

프로젝트의 일부 구성원에게 권장사항이 거의 또는 전혀 없는 것은 정상입니다. 구성원에게 특정 역할에 대한 권장사항이 없을 수 있는 몇 가지 이유는 다음과 같습니다.

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

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

  • 구성원의 사용 데이터가 충분하지 않습니다. IAM 추천자에 구성원이 Google Cloud를 사용하는 방법에 대한 정보가 충분하지 않으면 해당 구성원의 역할을 추천할 수 없습니다.

    IAM 추천자가 더 많은 데이터를 수집하면 이후에 구성원에 대한 권장사항이 표시될 수 있습니다.

  • 구성원이 Google 관리 서비스 계정입니다. 필요한 경우 Google 관리 서비스 계정이 리소스에 액세스할 수 있도록 IAM 추천자는 Google 관리 서비스 계정에 부여된 어떠한 역할도 분석하지 않습니다.

  • 역할 binding이 조건부입니다. 역할 binding에 조건이 포함된 경우 특정 권한이 충족되는 경우에만 역할이 부여됩니다. IAM 추천자는 이러한 역할 binding에 대한 권장사항을 제공하지 않습니다.

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

  • 역할 binding에 대한 현재 권장사항이 닫히거나 적용된 후 되돌려졌습니다. 구성원의 역할을 변경하기 위한 권장사항을 닫거나 권장사항을 적용한 후 되돌리면 Cloud Console에 해당 권장사항이 다시 표시되지 않습니다.

    향후 IAM 추천자가 구성원의 역할을 변경하도록 새 권장사항을 제공하면 이전 권장사항을 닫거나 되돌려도 Cloud Console에 새 권장사항이 표시됩니다.

    권장사항 로그에서 닫거나 되돌린 권장사항을 볼 수 있습니다. 닫은 권장사항은 권장사항이 만료되기 전까지 이용할 수 있습니다. 되돌린 권장사항은 90일 동안 사용할 수 있습니다.

필수 IAM 권한

이 섹션에서는 IAM 추천자를 사용하는 데 필요한 IAM 권한에 대해 설명합니다.

권장사항 보기

IAM 추천자의 권장사항을 보려면 현재 보고 있는 프로젝트에 대해 다음 권한이 있어야 합니다.

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • resourcemanager.projects.getIamPolicy

최소 권한 원칙을 준수하면서 이러한 권한을 얻으려면 관리자에게 다음과 같은 사전 정의된 역할을 부여할 것을 요청합니다.

  • 역할 뷰어(roles/iam.roleViewer)
  • IAM 추천자 뷰어(roles/recommender.iamViewer) 또는 IAM 보안 검토자(roles/iam.securityReviewer)

또는 관리자가 필요한 권한(커스텀 역할 또는 더 많은 권한이 있는 사전 정의된 역할 등)을 포함하는 다른 역할을 부여할 수 있습니다.

권장사항 적용 및 닫기

IAM 추천자의 권장사항을 적용하거나 닫으려면 관리 중인 프로젝트에 대해 다음 권한이 있어야 합니다.

  • iam.roles.get
  • iam.roles.list
  • recommender.iamPolicyRecommendations.get
  • recommender.iamPolicyRecommendations.list
  • recommender.iamPolicyRecommendations.update
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

최소 권한 원칙을 준수하면서 이러한 권한을 얻으려면 관리자에게 다음과 같은 사전 정의된 역할을 부여할 것을 요청합니다.

  • 역할 뷰어(roles/iam.roleViewer)
  • IAM 추천자 관리자(roles/recommender.iamAdmin)
  • 프로젝트 IAM 관리자(roles/resourcemanager.projectIamAdmin)

또는 관리자가 필요한 권한(커스텀 역할 또는 더 많은 권한이 있는 사전 정의된 역할 등)을 포함하는 다른 역할을 부여할 수 있습니다.

다음 단계