앱의 액세스 제어 구성

이 페이지에서는 Gemini Enterprise 관리자가 API를 사용하여 개별 Gemini Enterprise 앱의 세부적인 액세스 제어를 관리하는 방법을 설명합니다.

앱과 데이터 스토어 모두에서 세분화된 리소스 수준 액세스 제어를 구성해야 하는 경우 앱 및 데이터 스토어에 대한 세분화된 액세스 제어 구성을 참고하세요.

기본적으로 IAM 권한은 프로젝트 수준에서 관리되는 경우가 많습니다. 앱 수준 IAM을 사용하면 더 세분화된 제어가 가능하므로 관리자는 다음 작업을 할 수 있습니다.

  • 동일한 Google Cloud 프로젝트 내에서 특정 앱에 대한 사용자 액세스를 제한합니다.
  • Gemini Enterprise 배포를 위해 조직의 요구사항 및 데이터 사일로에 맞게 권한을 조정합니다.

예를 들어 HR 앱과 회사 전체 앱이 있는 조직을 생각해 보세요. 프로젝트 수준 권한이 있는 HR팀 구성원은 두 앱에 모두 액세스할 수 있습니다. 반면 앱 수준 IAM 정책을 사용하면 영업팀 구성원에게 회사 전체 앱에 대한 액세스 권한만 부여하여 HR 앱에 액세스하지 못하도록 할 수 있습니다.

앱 수준 IAM 정책 예시 다이어그램

시작하기 전에

  • Gemini Enterprise 관리자(roles/discoveryengine.agentspaceAdmin) 역할이 있는지 확인합니다.

  • 모든 Gemini Enterprise 사용자에게 유효한 라이선스가 있고 프로젝트 수준에서 Gemini Enterprise 제한된 사용자(roles/discoveryengine.agentspaceRestrictedUser) 역할이 부여되었는지 확인합니다. 자세한 내용은 사용자에게 권한 부여를 참고하세요.

    이 역할은 자체적으로 앱에 대한 액세스 권한을 부여하지 않습니다. 사용자에게 필요한 프로젝트 수준 액세스를 제공한 다음 개별 앱에 대한 액세스 권한을 부여합니다. 사전 정의된 roles/discoveryengine.agentspaceRestrictedUser 역할 대신 커스텀 프로젝트 수준 역할을 사용하는 경우 커스텀 역할에 discoveryengine.locations.buildAuthorizationUrl, discoveryengine.dataStores.get, discoveryengine.collections.get, discoveryengine.devToolsConfigs.get 권한이 포함되어 있는지 확인하세요. discoveryengine.devToolsConfigs.get를 생략하면 웹 앱에서 devToolsConfig를 확인할 때 Cloud 감사 로그에 403 PERMISSION_DENIED 오류가 발생합니다.

프로젝트 수준 액세스에서 앱 수준 액세스로 전환

사용자를 특정 앱으로 제한하려면 프로젝트 수준 Gemini Enterprise 사용자 역할을 Gemini Enterprise 제한된 사용자 역할로 바꾼 다음 개별 앱 수준에서 Gemini Enterprise 사용자 역할을 부여해야 합니다.

사용자를 프로젝트 수준 액세스에서 앱 수준 액세스로 전환하려면 다음 단계를 따르세요. 프로젝트 수준 변경사항에는 Google Cloud 콘솔을 사용하고, 앱 수준 권한 부여에는 Google Cloud 콘솔에서 지원하지 않는 API를 사용합니다.

  1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
  2. 사용자를 찾아 프로젝트 수준 권한에서 Gemini Enterprise 사용자(roles/discoveryengine.agentspaceUser) 역할을 삭제합니다.
  3. 아직 부여하지 않은 경우 프로젝트 수준에서 사용자에게 Gemini Enterprise 제한된 사용자(roles/discoveryengine.agentspaceRestrictedUser) 역할을 부여합니다.
  4. setIamPolicy 메서드를 사용하여 액세스해야 하는 각 특정 앱에 대해 사용자에게 Gemini Enterprise 사용자(roles/discoveryengine.agentspaceUser) 역할을 부여합니다. 자세한 내용은 앱의 IAM 정책 관리를 참고하세요.

앱의 IAM 정책 관리

Gemini Enterprise 앱에 대한 액세스를 관리하려면 getIamPolicy 및 setIamPolicy API 메서드를 사용하면 됩니다.

다음 단계에서는 현재 정책을 가져온 다음 이를 업데이트하여 사용자 액세스 권한을 부여하거나 취소하는 방법을 보여줍니다.

앱 IAM 정책 가져오기

getIamPolicy 메서드를 사용하여 앱의 현재 IAM 정책을 가져옵니다. 현재 권한을 덮어쓰지 않으려면 먼저 기존 정책을 가져오는 것이 좋습니다.

REST

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:getIamPolicy"

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.
  • ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.
    • 미국 멀티 리전의 경우 us
    • EU 멀티 리전의 경우 eu
    • 전역 위치의 경우 global
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.
  • LOCATION: 데이터 스토어의 멀티 리전입니다(global, us 또는 eu).
  • APP_ID: 구성할 앱의 ID입니다.

앱 IAM 정책 업데이트

앱에 대한 사용자 액세스 권한을 부여하거나 취소하려면 setIamPolicy 메서드를 사용하여 앱의 IAM 정책을 업데이트합니다.

IAM 정책은 Gemini Enterprise 사용자(roles/discoveryengine.agentspaceUser) 역할을 사용하여 사용자에게 앱에 대한 직접 액세스 권한을 부여합니다.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
      "policy": {
         "etag": "ETAG",
         "bindings": [
          {
            "role": "roles/discoveryengine.agentspaceUser",
            "members": [
              "user:USER_EMAIL",
              "group:GROUP_EMAIL",
              "principal://iam.googleapis.com/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID",
              "principalSet://iam.googleapis.com/locations/global/workloadIdentityPools/POOL_ID/attribute.NAME/VALUE"
            ]
          }
        ]
      }
    }' \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:setIamPolicy"

다음을 바꿉니다.

  • ETAG: getIamPolicy 메서드를 사용했을 때 응답으로 받은 etag 값입니다.

  • USER_EMAIL, GROUP_EMAIL: 하나 이상의 사용자 또는 그룹 이메일 주소입니다. user 및 group 외에도 principal 및 principalSet는 워크로드 아이덴티티 제휴의 유효한 구성원 유형입니다.

    • 액세스 권한을 부여하려면 members 배열에 주 구성원을 추가합니다. 예를 들면 "user:cloudysanfrancisco@gmail.com" 또는 "group:mcymbalgroup@google.com"입니다.

    • 액세스 권한을 취소하려면 members 배열에서 주 구성원을 삭제합니다.

  • POOL_ID: 워크로드 아이덴티티 풀의 ID입니다.

  • SUBJECT_ID: 특정 ID의 주체 식별자입니다.

  • NAME: 속성의 이름입니다.

  • VALUE: 속성 값

  • PROJECT_ID: 프로젝트의 ID입니다.

  • ENDPOINT_LOCATION: API 요청의 멀티 리전입니다. 다음 값 중 하나를 지정합니다.

    • 미국 멀티 리전의 경우 us
    • EU 멀티 리전의 경우 eu
    • 전역 위치의 경우 global
    자세한 내용은 데이터 스토어의 멀티 리전 지정을 참조하세요.

  • LOCATION: 데이터 스토어의 멀티 리전입니다(global, us 또는 eu).

  • APP_ID: 구성할 앱의 ID입니다.

다음 단계

IAM 정책이 있는 앱을 삭제하려면 앱을 삭제하기 전에 정책에서 사용자를 삭제하면 됩니다. 자세한 내용은 IAM 정책이 있는 앱 삭제를 위한 권장사항을 참고하세요.