Admin SDK로 거버넌스 정책 관리하기

Admin SDK로 거버넌스 정책 관리하기

거버넌스 정책을 목록으로 조회하고 프로젝트를 코드로 정책에 등록(enroll)할 수 있어요.

출처: 문서

본문

개요 (Overview)

AI 거버넌스 정책은 조직 스코프의 컨트롤 묶음으로, 프로젝트가 어떻게 배포되는지를 게이트해요. 정책과 컨트롤은 플랫폼 UI에서 생성·구성되고, Admin SDK는 코드로 프로젝트를 정책에 등록할 수 있게 해 줘요 — 고객당·에이전트당 프로젝트를 프로비저닝하는 CI/CD 파이프라인에 이상적이에요. 각 프로젝트는 최대 한 개의 정책에 속해요.

이 페이지의 모든 메서드는 조직 API 키가 필요해요. 클라이언트 생성은 퀵스타트를 참고해요. 거버넌스 정책은 조직 클라이언트의 governance 네임스페이스 아래에 있어요(client.organization().governance); 프로젝트 스코프의 대응물은 없어요.

정책 목록 조회 (List Policies)

조직의 모든 거버넌스 정책을 나열해요. 각 정책에는 controls와 projectsCount가 포함돼요.

Python

from confidentai import ConfidentAI

client = ConfidentAI()

org = client.organization()

policies = org.governance.policies.list()

TypeScript

import { ConfidentAI } from "confidentai";

const client = new ConfidentAI();

const org = client.organization();

const policies = await org.governance.policies.list();

정책의 프로젝트 목록 조회 (List a Policy's Projects)

현재 정책에 등록된 프로젝트를 페이지 단위로 넘겨 조회해요.

Python

org = client.organization()

projects = org.governance.policies.list_projects(
    "a17c4e2d-9b3f-4a6c-8d1e-2f5a9c3b7e0d",
    page=1,
    page_size=25,
)

TypeScript

const org = client.organization();

const projects = await org.governance.policies.listProjects(
  "a17c4e2d-9b3f-4a6c-8d1e-2f5a9c3b7e0d",
  { page: 1, pageSize: 25 },
);

프로젝트 할당 (Assign Projects)

정책에 프로젝트를 하나 이상 할당해요. 할당은 가산적이고 부분적이에요: 존재하는 프로젝트는 모두 등록되어 assignedProjectIds로 반환되고(다른 정책에 있던 프로젝트는 이동돼요), 조직에 존재하지 않는 id는 호출을 실패시키는 대신 notFoundProjectIds로 반환돼요. 이미 등록된 프로젝트를 다시 할당해도 집계되므로, 파이프라인을 실행할 때마다 안전하게 실행할 수 있어요.

Python

org = client.organization()

result = org.governance.policies.assign(
    "a17c4e2d-9b3f-4a6c-8d1e-2f5a9c3b7e0d",
    project_ids=["clq9z3x1k0001la08f7t3g5p2"],
)
print(result.assigned_project_ids)   # ["clq9z3x1k0001la08f7t3g5p2"]
print(result.not_found_project_ids)  # []
print(result.count)                  # 1

TypeScript

const org = client.organization();

const result = await org.governance.policies.assign(
  "a17c4e2d-9b3f-4a6c-8d1e-2f5a9c3b7e0d",
  { projectIds: ["clq9z3x1k0001la08f7t3g5p2"] },
);
console.log(result.assignedProjectIds); // ["clq9z3x1k0001la08f7t3g5p2"]
console.log(result.notFoundProjectIds); // []
console.log(result.count);              // 1

프로젝트 할당 해제 (Unassign Projects)

정책에서 프로젝트를 제거해요(예: 고객을 디프로비저닝할 때). 제거도 부분적이에요: 현재 정책에 있는 프로젝트는 제거되어 unassignedProjectIds로 반환되고, 이 정책에 없는 id(알 수 없거나, 다른 조직 소속이거나, 다른 정책 소속)는 skippedProjectIds로 반환돼요.

Python

org = client.organization()

result = org.governance.policies.unassign(
    "a17c4e2d-9b3f-4a6c-8d1e-2f5a9c3b7e0d",
    project_ids=["clq9z3x1k0001la08f7t3g5p2"],
)
print(result.unassigned_project_ids)  # ["clq9z3x1k0001la08f7t3g5p2"]
print(result.skipped_project_ids)     # []
print(result.count)                   # 1

TypeScript

const org = client.organization();

const result = await org.governance.policies.unassign(
  "a17c4e2d-9b3f-4a6c-8d1e-2f5a9c3b7e0d",
  { projectIds: ["clq9z3x1k0001la08f7t3g5p2"] },
);
console.log(result.unassignedProjectIds); // ["clq9z3x1k0001la08f7t3g5p2"]
console.log(result.skippedProjectIds);    // []
console.log(result.count);                // 1

각 요청은 수정된 governancePolicy({ id, name })도 함께 반환해요. 비동기 코드에서는 모든 메서드에 a_ 접두사가 붙은 대응물(a_list, a_list_projects, a_assign, a_unassign)이 있어요.

다음 단계 (Next Steps)

CI/CD에서 프로젝트를 정책에 할당하기

각 프로젝트를 프로비저닝할 때 등록하는 전체 파이프라인 워크스루예요.

AI 거버넌스

배포를 게이트하는 거버넌스 정책과 컨트롤을 구성해요.

더 알아보기