Vertex AI Feature Store 리소스에 대한 액세스 제어

리소스 계층 구조의 여러 레벨에서 IAM 정책을 설정하여 Vertex AI Feature Store(기존) 리소스에 대한 액세스를 제어할 수 있습니다. 예를 들면 다음과 같습니다.

  • 프로젝트 수준 정책 IAM은 프로젝트의 모든 리소스에 적용됩니다. 프로젝트의 모든 피처스토어를 읽을 수 있는 권한을 사용자에게 부여하도록 프로젝트 수준 정책을 설정할 수 있습니다.

  • 리소스 수준 IAM 정책을 사용하면 특정 리소스에 액세스할 수 있는 사용자를 지정할 수 있습니다. 일부 사용자는 프로젝트의 특정 피처스토어에 쓰기 권한을 부여하도록 리소스 수준 정책을 설정할 수 있습니다.

다음 Vertex AI Feature Store(기존) 리소스에 리소스 수준 Identity and Access Management(IAM) 정책을 설정할 수 있습니다.

  • 피처스토어: 피처스토어에 Identity and Access Management 정책을 설정하면 피처스토어와 해당 피처스토어에서 생성된 모든 항목 유형에 정책이 적용됩니다.

  • 항목 유형: 항목 유형에 Identity and Access Management 정책을 설정하면 항목 유형과 항목 유형이 생성된 피처스토어에만 정책이 적용됩니다.

IAM 정책에는 어떤 주 구성원이 어떤 IAM 역할과 연결되는지 정의하는 하나 이상의 역할 바인딩이 포함됩니다. 역할은 주 구성원에게 부여하는 권한 모음입니다. Vertex AI는 정책에 사용할 수 있는 사전 정의된 역할을 제공합니다. 맞춤 역할을 직접 만들 수도 있습니다.

고려사항

조건부 리소스 정책을 설정할 수는 없습니다. 예를 들어 testing과 같은 특정 문자열로 시작하거나 이 이름을 사용하는 리소스에 대한 액세스 권한을 부여하는 정책은 만들 수 없습니다.

샘플 사용 사례

예를 들어 조직에 두 사용자 집단이 있다고 가정해 보겠습니다. 한 집단에서는 DevOps 관리자 역할로 핵심 인프라를 관리합니다. 또 다른 집단에서는 데이터 엔지니어와 같은 특정 항목 유형 및 특성을 관리합니다.

DevOps 관리자는 프로젝트 수준에서 피처스토어 및 항목 유형을 관리합니다. 데이터 엔지니어가 새로운 항목 유형을 요청하면 DevOps 관리자는 해당 항목 유형의 소유권을 만들어 데이터 엔지니어에게 위임할 수 있습니다. 데이터 엔지니어는 자신이 소유한 항목 유형의 특성을 자유롭게 관리할 수 있지만 피처스토어 또는 기타 항목 유형을 운영할 수는 없습니다. 예를 들어 이 제어를 사용하면 DevOps 관리자가 민감한 정보가 포함된 항목 유형에 대한 액세스를 제한할 수 있습니다.

이 시나리오에서 DevOps 관리자는 프로젝트 수준의 aiplatform.featurestoreAdmin 역할을 갖습니다. 그런 다음 데이터 엔지니어가 새로운 항목 유형을 요청하면 관리자는새 항목 유형을 만들고 aiplatform.entityTypeOwner 역할을 항목 유형 수준(리소스 수준 정책)의 데이터 엔지니어에게 할당합니다.

IAM 정책 가져오기

Google Cloud 콘솔 또는 API를 사용하여 피처스토어 또는 항목 유형에 대한 현재 IAM 정책을 볼 수 있습니다.

웹 UI

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 특성 페이지로 이동합니다.

    특성 페이지로 이동

  2. 리전 드롭다운 목록에서 리전을 선택합니다.
  3. 특성 테이블의 피처스토어 또는 항목 유형 열에서 피처스토어 또는 항목 유형을 선택합니다.
  4. 권한을 클릭합니다.
  5. 리소스 수준 권한을 표시하려면 상속된 권한 표시를 사용 중지합니다.

    선택한 리소스에 대한 액세스 권한이 있는 주 구성원은 역할별로 그룹화됩니다.

  6. 역할을 확장하여 해당 역할에 할당된 주 구성원을 확인합니다.

REST

리소스에서 IAM 정책을 가져오려면 getIamPolicy 메서드를 사용하는 POST 요청을 전송합니다. 다음 예시에서는 항목 유형 정책을 가져옵니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: 피처스토어가 있는 리전(예: us-central1)
  • PROJECT_ID: 프로젝트 ID
  • FEATURESTORE_ID: 피처스토어의 ID
  • ENTITY_TYPE_ID: 항목 유형의 ID

HTTP 메서드 및 URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy"

PowerShell

다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:getIamPolicy" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:[email protected]"
      ]
    }
  ]
}

IAM 정책 설정

피처스토어 또는 항목 유형에 IAM 정책을 설정할 수 있습니다.

웹 UI

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 특성 페이지로 이동합니다.

    특성 페이지로 이동

  2. 리전 드롭다운 목록에서 리전을 선택합니다.
  3. 특성 테이블의 피처스토어 또는 항목 유형 열에서 피처스토어 또는 항목 유형을 선택합니다.
  4. 권한을 클릭합니다.
  5. 주 구성원 추가를 클릭합니다.
  6. 주 구성원과 함께 주 구성원과 연결할 역할을 하나 이상 지정합니다.
  7. 저장을 클릭합니다.

REST

리소스에 IAM 정책을 설정하려면 setIamPolicy 메서드를 사용하는 POST 요청을 전송합니다. 다음 예시에서는 항목 유형에 정책을 설정합니다.

IAM 정책을 설정하면 기존 정책이 재정의됩니다(변경사항은 추가되지 않음). 리소스의 기존 정책을 수정하려면 getIamPolicy 메서드를 사용하여 기존 정책을 가져온 다음 수정합니다. setIamPolicy 요청에 수정된 정책과 함께 etag를 포함합니다.

409 오류 코드가 수신되면 정책을 업데이트한 동시 실행 SetIamPolicy 요청이 발생한 것입니다. GetIamPolicy를 만들어 정책의 업데이트된 etag를 가져온 다음 새 etag를 포함하여 SetIamPolicy 요청을 다시 시도합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: 피처스토어가 있는 리전(예: us-central1)
  • PROJECT_ID: 프로젝트 ID
  • FEATURESTORE_ID: 피처스토어의 ID
  • ENTITY_TYPE_ID: 항목 유형의 ID
  • ROLE: 부여할 권한이 포함된 IAM 역할입니다(예: roles/aiplatform.featurestoreDataViewer).
  • PRINCIPAL: 역할의 권한이 부여되는 주 구성원입니다(예: user:[email protected]).
  • ETAG: 동시에 발생한 여러 정책 업데이트가 서로를 덮어쓰지 않도록 사용하는 문자열 값입니다. 이 값은 getIamPolicy 응답의 일부로 반환됩니다.

HTTP 메서드 및 URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy

JSON 요청 본문:

{
  "policy": {
    "bindings": [
      {
        "role": "ROLE",
        "members": [
          "PRINCIPAL"
        ]
      },
      ...
    ],
    "etag": "ETAG"
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:setIamPolicy" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "version": 1,
  "etag": "BwXTmICm7mI",
  "bindings": [
    {
      "role": "roles/aiplatform.entityTypeOwner",
      "members": [
        "user:[email protected]"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataViewer",
      "members": [
        "user:[email protected]",
        "user:[email protected]"
      ]
    },
    {
      "role": "roles/aiplatform.featurestoreDataWriter",
      "members": [
        "user:[email protected]",
      ]
    }
  ]
}

리소스의 IAM 권한 확인

현재 인증된 사용자에게 피처스토어 또는 항목 유형에 대한 특정 IAM 권한이 있는지 확인할 수 있습니다.

REST

사용자에게 리소스에 대한 특정 IAM 권한이 있는지 확인하려면 testIamPermissions 메서드를 사용하는 POST 요청을 전송합니다. 다음 예시에서는 현재 인증된 사용자에게 항목 유형에 대한 IAM 권한 집합이 있는지 테스트할 수 있습니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: 피처스토어가 있는 리전(예: us-central1)
  • PROJECT_ID: 프로젝트 ID
  • FEATURESTORE_ID: 피처스토어의 ID
  • ENTITY_TYPE_ID: 항목 유형의 ID

HTTP 메서드 및 URL:

POST http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d

JSON 요청 본문:

{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:testIamPermissions -d" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 수신됩니다. 응답에는 현재 인증된 사용자가 사용할 수 있는 요청 JSON 본문의 권한만 포함됩니다.
{
  "permissions": [
    "aiplatform.googleapis.com/entityTypes.get",
    "aiplatform.googleapis.com/entityTypes.readFeatureValues",
    "aiplatform.googleapis.com/entityTypes.writeFeatureValues"
  ]
}