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 거버넌스
배포를 게이트하는 거버넌스 정책과 컨트롤을 구성해요.