Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

보안 표지 범주 생성(Create Marking Category) (V2)

보안 표지를 묶을 범주와 초기 권한을 생성합니다. 초기 권한에는 조직을 최소 하나, ADMINISTER 역할 할당을 최소 하나 포함해야 합니다. 자신 또는 자신이 속한 그룹을 관리자로 지정하지 않으면 새 범주를 직접 관리할 수 없습니다.

이 엔드포인트는 미리보기 기능이며 언제든 변경되거나 제거될 수 있습니다. 사용하려면 preview=true를 지정합니다.

HTTP 요청

POST /api/v2/admin/markingCategories

작업 식별자는 v2.createMarkingCategory입니다. OAuth2로 호출하는 타사 애플리케이션에는 api:admin-write 권한 범위가 필요합니다. 각 요청에 Authorization: Bearer <접근 토큰>을 전달합니다.

경로 매개변수

지정할 경로 매개변수가 없습니다.

쿼리 매개변수

이름자료형필수 여부의미와 조건예시 값
previewboolean선택미리보기 기능 사용을 활성화합니다.true

요청 본문

본문은 필수 CreateMarkingCategoryRequest 객체입니다. initialPermissions, name, description은 필수입니다. 배열의 형식상 선택 여부와 별개로 초기 조직 및 관리자 조건을 충족해야 합니다.

이름자료형필수 여부의미와 조건예시 값
initialPermissionsobject필수범주의 초기 권한입니다. 이후 MarkingCategoryPermission 작업으로 변경할 수 있습니다. ADMINISTER 역할을 최소 하나 포함해야 합니다. 자신 또는 자신이 속한 그룹의 주체 ID를 ADMINISTER로 지정하지 않으면 생성한 범주를 직접 관리할 수 없습니다.본문 예시 참조
namestring필수Customer Data
descriptionstring필수Markings related to data about our customers

initialPermissions의 구조

이름자료형필수 여부의미와 조건예시 값
organizationRidslist<OrganizationRid>선택역할과 관계없이 이 목록의 조직 중 하나 이상에 속해야 범주 안의 표지 정보를 볼 수 있습니다.
roleslist<MarkingCategoryRoleAssignment>선택
isPublicboolean필수true이면 지정한 조직 중 하나 이상에 속한 모든 사용자가 범주 안의 표지 정보를 볼 수 있습니다. false이면 명시적으로 VIEW 역할을 부여받은 사용자만 볼 수 있습니다.false
organizationRids의 구조

배열 항목은 OrganizationRid이며 자료형은 string입니다.

roles의 구조

배열 항목은 MarkingCategoryRoleAssignment이며 자료형은 object입니다.

이름자료형필수 여부의미와 조건예시 값
roleenum필수ADMINISTER는 범주 메타데이터와 권한을 변경하고, VIEW는 범주와 범주 안의 표지 정보를 조회합니다. 범주 권한으로 해당 표지가 보호하는 데이터의 조회나 관리 권한이 생기지는 않습니다. 허용값: ADMINISTER, VIEW.ADMINISTER
principalIdstring필수Foundry 그룹 또는 사용자의 ID입니다.f05f8da4-b84c-4fca-9c77-8af0b13d11de

다음 본문의 식별자와 값은 가상 예시입니다.

{
  "name": "Customer Data",
  "description": "Markings related to data about our customers",
  "initialPermissions": {
    "organizationRids": [
      "ri.multipass..organization.c30ee6ad-b5e4-4afe-a74f-fe4a289f2faa"
    ],
    "roles": [
      {
        "role": "ADMINISTER",
        "principalId": "f05f8da4-b84c-4fca-9c77-8af0b13d11de"
      }
    ],
    "isPublic": false
  }
}

응답

응답 형식은 MarkingCategory입니다.

생성한 보안 표지 범주입니다.

이름자료형필수 여부의미와 조건예시 값
idstring필수보안 표지 범주 ID입니다. 사용자가 만든 범주는 UUID이며, 조직에 연결된 표지는 ID가 Organization인 범주에 속합니다.0950264e-01c8-4e83-81a9-1a6b7f77621a
namestring필수Customer Data
descriptionstring필수Markings related to data about our customers
categoryTypeenum필수허용값: CONJUNCTIVE, DISJUNCTIVE.CONJUNCTIVE
markingTypeenum필수허용값: MANDATORY, CBAC.MANDATORY
prioritylong선택CBAC 범주에서만 사용하는 우선순위입니다. 숫자가 클수록 우선순위가 높습니다.10
markingslist<MarkingId>선택
deletedboolean필수범주가 삭제되었는지 나타냅니다.false
createdTimestring (date-time)필수리소스 생성 시각입니다.2003-05-06T12:34:56.789Z
createdBystring선택리소스를 생성한 Foundry 사용자입니다.f05f8da4-b84c-4fca-9c77-8af0b13d11de

markings의 구조

배열 항목은 MarkingId이며 자료형은 string입니다.

보안 표지의 ID입니다.

가상 보안 표지 범주의 응답 예시입니다.

{
  "categoryType": "CONJUNCTIVE",
  "deleted": false,
  "markings": [],
  "createdBy": "f05f8da4-b84c-4fca-9c77-8af0b13d11de",
  "name": "Customer Data",
  "description": "Markings related to data about our customers",
  "createdTime": "2003-05-06T12:34:56.789Z",
  "id": "0950264e-01c8-4e83-81a9-1a6b7f77621a",
  "markingType": "MANDATORY"
}

개별 오류

오류 이름오류 코드HTTP의미와 조건추가 매개변수
CreateMarkingCategoryMissingInitialAdminRoleINVALID_ARGUMENT400범주를 만들 때 ADMINISTER 역할 할당을 최소 하나 제공해야 합니다.
CreateMarkingCategoryMissingOrganizationINVALID_ARGUMENT400범주를 만들 때 조직을 최소 하나 지정해야 합니다.
PrincipalNotFoundNOT_FOUND404지정한 PrincipalId의 사용자 또는 그룹을 찾을 수 없습니다.principalId
CreateMarkingCategoryPermissionDeniedPERMISSION_DENIED403보안 표지 범주 생성 권한이 거부되었습니다.

요청 예제

FOUNDRY_HOST에는 https://를 제외한 Foundry 호스트를, FOUNDRY_TOKEN에는 유효한 토큰을 환경 변수로 제공합니다. 예시 식별자와 매개변수 값은 실제 작업 대상에 맞게 바꿉니다.

cURL

curl -X POST \
	-H "Content-type: application/json" \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/admin/markingCategories?preview=true" \
	-d '{"name":"Customer Data","description":"Markings related to data about our customers","initialPermissions":{"organizationRids":["ri.multipass..organization.c30ee6ad-b5e4-4afe-a74f-fe4a289f2faa"],"roles":[{"role":"ADMINISTER","principalId":"f05f8da4-b84c-4fca-9c77-8af0b13d11de"}],"isPublic":false}}'

Python

Requests 라이브러리가 설치된 Python 환경에서 사용합니다.

import os
import requests

HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
    "content-type": "application/json",
    "authorization": "Bearer {}".format(TOKEN)
}
request_body = {
    "name": "Customer Data",
    "description": "Markings related to data about our customers",
    "initialPermissions": {
        "organizationRids": [
            "ri.multipass..organization.c30ee6ad-b5e4-4afe-a74f-fe4a289f2faa"
        ],
        "roles": [
            {
                "role": "ADMINISTER",
                "principalId": "f05f8da4-b84c-4fca-9c77-8af0b13d11de"
            }
        ],
        "isPublic": False
    }
}

response = requests.post('https://{}/api/v2/admin/markingCategories?preview=true'.format(HOSTNAME), headers=headers, json=request_body)
print(response)

Java

Apache HttpClient 4.5 API와 try-with-resources를 사용합니다. 클래스 이름에 맞는 CreateMarkingCategoryExample.java 파일에서 사용합니다.

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;

public class CreateMarkingCategoryExample {
    public static void main(String[] args) throws Exception {
        String HOSTNAME = System.getenv("FOUNDRY_HOST");
        String TOKEN = System.getenv("FOUNDRY_TOKEN");

        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
            HttpPost request = new HttpPost("https://" + HOSTNAME + "/api/v2/admin/markingCategories?preview=true");
            request.addHeader("content-type", "application/json");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            request.setEntity(new StringEntity("{\"name\":\"Customer Data\",\"description\":\"Markings related to data about our customers\",\"initialPermissions\":{\"organizationRids\":[\"ri.multipass..organization.c30ee6ad-b5e4-4afe-a74f-fe4a289f2faa\"],\"roles\":[{\"role\":\"ADMINISTER\",\"principalId\":\"f05f8da4-b84c-4fca-9c77-8af0b13d11de\"}],\"isPublic\":false}}", ContentType.APPLICATION_JSON));
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println(response);
            }
        }
    }
}

JavaScript

fetch를 제공하는 Node.js 환경에서 사용합니다. 서비스 사용자 토큰을 브라우저로 전달하지 않습니다.

const HOSTNAME = process.env.FOUNDRY_HOST;
const TOKEN = process.env.FOUNDRY_TOKEN;

fetch(`https://${HOSTNAME}/api/v2/admin/markingCategories?preview=true`, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${TOKEN}`,
    },
    body: '{"name":"Customer Data","description":"Markings related to data about our customers","initialPermissions":{"organizationRids":["ri.multipass..organization.c30ee6ad-b5e4-4afe-a74f-fe4a289f2faa"],"roles":[{"role":"ADMINISTER","principalId":"f05f8da4-b84c-4fca-9c77-8af0b13d11de"}],"isPublic":false}}'
}).then((response) => {
    console.log(response)
});

PowerShell

$TOKEN = $env:FOUNDRY_TOKEN
$HOSTNAME = $env:FOUNDRY_HOST

$headers = @{
    "authorization" = "Bearer $TOKEN"
}

$response = Invoke-WebRequest -Uri "https://$HOSTNAME/api/v2/admin/markingCategories?preview=true" `
	-Method Post `
	-Headers $headers `
	-ContentType application/json `
	-Body "{`"name`":`"Customer Data`",`"description`":`"Markings related to data about our customers`",`"initialPermissions`":{`"organizationRids`":[`"ri.multipass..organization.c30ee6ad-b5e4-4afe-a74f-fe4a289f2faa`"],`"roles`":[{`"role`":`"ADMINISTER`",`"principalId`":`"f05f8da4-b84c-4fca-9c77-8af0b13d11de`"}],`"isPublic`":false}}"

$response.content