본문 바로가기
WIKI 기술 지식 베이스

Create or Update Role Mapping API

원문 보기 위키 갱신

출처: 문서

본문

역할 매핑 생성 또는 업데이트 API

1.0부터 도입 {: .label .label-purple }

지정된 역할 매핑을 생성하거나 교체해요.

엔드포인트

PUT /_plugins/_security/api/rolesmapping/{role}

요청 본문 필드

요청 본문은 필수예요. 다음 필드를 가진 JSON 객체예요.

필드 데이터 타입 설명 필수 여부
users Array of strings 역할에 매핑되는 사용자 이름이에요. 와일드카드 패턴을 지원해요. 아니요
backend_roles Array of strings 역할에 매핑되는 백엔드 역할이에요. 이 백엔드 역할 중 하나라도 가진 사용자는 해당 역할을 부여받아요. 아니요
and_backend_roles Array of strings 역할에 매핑되는 백엔드 역할이에요. 사용자가 해당 역할을 부여받으려면 이 백엔드 역할을 모두 가지고 있어야 해요. 아니요
hosts Array of strings 역할에 매핑되는 호스트 이름 또는 IP 주소예요. 와일드카드 패턴을 지원해요. 아니요
description String 역할 매핑에 대한 설명이에요. 아니요
hidden Boolean 역할 매핑이 API와 OpenSearch Dashboards에서 숨겨지는지 여부예요. 기본값은 false예요. 아니요
reserved Boolean 역할 매핑이 읽기 전용이라 수정할 수 없는지 여부예요. 기본값은 false예요. 아니요

호스트 기반 역할 매핑

hosts 파라미터는 특정 IP 주소나 호스트 이름에서 시작되는 요청을 해당 역할에 매핑해요. CIDR 블록은 지원하지 않지만, 192.168.*.*나 *.example.com 같은 와일드카드 패턴(glob)은 사용할 수 있어요. 클라이언트의 출발지 주소를 기준으로 역할을 할당하고 싶을 때 유용해요:

  • IP 주소로 매칭하려면(예: "192.168.1.10") 추가 설정이 필요 없어요.

  • 호스트 이름으로 매칭하려면(예: "myserver.example.com") 클러스터 수준 설정 파라미터를 지정해야 해요:

    opensearch_security.host_resolver_mode: ip-hostname
    

    이렇게 하면 역방향 DNS 조회로 호스트 이름을 확인할 수 있어요. 자세한 내용은 OpenSearch 구성을 참고하세요.

hosts에 "*"를 사용하면 모든 클라이언트 IP와 호스트 이름이 매칭돼요. 즉, 사용자와 상관없이 모든 요청에 이 역할이 적용돼요. users: ["someuser"]와 함께 사용하면 의도한 것보다 넓은 접근 권한이 부여될 수 있어요. 모든 클라이언트 IP에 역할을 의도적으로 부여하려는 게 아니라면 hosts: ["*"] 설정은 피하세요. {: .warning}

요청 예제

PUT _plugins/_security/api/rolesmapping/test-role
{
  "backend_roles": [
    "starfleet",
    "captains"
  ],
  "hosts": [
    "*.starfleetintranet.com"
  ],
  "users": [
    "test-user"
  ]
}

{% include copy-curl.html security=true %}

응답 예제

{
  "status": "CREATED",
  "message": "'test-role' created."
}

더 알아보기 (Learn more)