Security settings
출처: 문서
본문
보안 설정
Security 플러그인은 클러스터 내에서 사용자, 역할 및 활동을 관리하는 방식을 정의하는 필요한 설정을 저장하는 데 사용되는 여러 YAML 구성 파일을 제공해요. Security 플러그인 구성 파일의 전체 목록은 YAML 파일 수정을 참조하세요.
다음 섹션에서는 opensearch.yml의 보안 관련 설정에 대해 설명해요. opensearch.yml은 <OPENSEARCH_HOME>/config/opensearch.yml에서 찾을 수 있어요. 이러한 설정을 적용하는 방법을 알아보려면 OpenSearch 구성을 참조하세요.
일반 설정
Security 플러그인은 다음 일반 설정을 지원해요:
-
plugins.security.nodes_dn(Static): 클러스터의 다른 노드를 나타내는 고유 이름(DN) 목록을 지정해요. 이 설정은 와일드카드와 정규 표현식을 지원해요. DN 목록은plugins.security.nodes_dn_dynamic_config_enabled가true인 경우 YAML 구성 외에도 보안 인덱스에서도 읽혀요. 이 설정이 올바르게 구성되지 않으면 노드가 서로를 신뢰할 수 없어 클러스터가 형성되지 않으며 다음 오류가 발생해요:Transport client authentication no longer supported. -
plugins.security.nodes_dn_dynamic_config_enabled(Static): 새cross_cluster원격이 구성될 때마다 노드를 다시 시작하지 않고 허용 목록에 있는nodes_dn을 관리해야 하는cross_cluster사용 사례와 관련이 있어요.nodes_dn_dynamic_config_enabled를true로 설정하면 슈퍼 관리자 호출 가능 고유 이름 API가 활성화되어nodes_dn을 동적으로 업데이트하거나 검색할 수 있어요. 이 설정은plugins.security.cert.intercluster_request_evaluator_class가 설정되지 않은 경우에만 적용돼요. 기본값은false예요. -
plugins.security.authcz.admin_dn(Static): 관리자 권한이 할당되어야 하는 인증서의 DN을 정의해요. 필수예요. -
plugins.security.roles_mapping_resolution(Static): 백엔드 역할이 Security 역할에 매핑되는 방식을 정의해요. 다음 값이 지원돼요:MAPPING_ONLY(기본값): 매핑은roles_mapping.yml에 명시적으로 구성되어야 해요.BACKENDROLES_ONLY: 백엔드 역할이 보안 역할에 직접 매핑돼요.roles_mapping.yml의 설정은 효과가 없어요.BOTH: 백엔드 역할이 직접 및roles_mapping.yml을 통해 보안 역할에 매핑돼요.
-
plugins.security.dls.mode(Static): 문서 수준 보안(DLS) 평가 모드를 설정해요. 기본값은adaptive예요. DLS 평가 모드 설정 방법을 참조하세요. -
plugins.security.compliance.salt(Static): 필드 마스킹을 위한 해시 값을 생성할 때 사용할 솔트예요. 최소 32자여야 해요. ASCII 문자만 허용돼요. 선택 사항이에요. -
plugins.security.compliance.immutable_indices(Static): 불변으로 표시된 인덱스의 문서는 한 번 쓰기, 여러 번 읽기 패러다임을 따라요. 이러한 인덱스에서 생성된 문서는 변경할 수 없으므로 불변이에요. -
config.dynamic.http.anonymous_auth_enabled(Static): 익명 인증을 활성화해요. 이렇게 하면 모든 HTTP 인증자가 도전하지 않아요. 기본값은false예요. -
http.detailed_errors.enabled(Static): OpenSearch 클러스터에 대해 수행된 REST 호출에 대한 자세한 오류 메시지를 활성화해요.true로 설정하면 오류 코드와 함께root_cause를 제공해요. 기본값은true예요.
REST 관리 API 설정
Security 플러그인은 다음 REST 관리 API 설정을 지원해요:
-
plugins.security.restapi.roles_enabled(Static): 나열된 역할에 대해 REST 관리 API에 대한 역할 기반 액세스를 활성화해요. 역할은 쉼표로 구분돼요. 기본값은 빈 목록이에요(어떤 역할도 REST 관리 API에 액세스할 수 없음). API에 대한 액세스 제어를 참조하세요. -
plugins.security.restapi.endpoints_disabled.<role>.<endpoint>(Static): 역할에 대해 특정 엔드포인트와 해당 HTTP 메서드를 비활성화해요. 이 설정의 값은 HTTP 메서드 배열로 구성돼요. 예:plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT","POST","DELETE"]. 기본적으로 모든 엔드포인트와 메서드가 허용돼요. 모든 역할에 대해 엔드포인트를 비활성화하려면 역할 이름 대신global을 사용하세요. 유효한<endpoint>값은 엔드포인트 값을 참조하세요. -
plugins.security.restapi.admin.enabled(Static):restapi:admin/*클러스터 권한을 활성화하여 역할에 허용 목록, 고유 이름 및 인증서 API에 대한 액세스 권한을 부여해요. 이 설정이false이면 이러한 권한은 효과가 없으며 해당 API는 관리자 인증서로만 접근할 수 있어요. 기본값은false예요. REST API 관리자 권한을 참조하세요. -
plugins.security.restapi.max_string_length(Static): Security REST API 요청 본문에서 개별 문자열 값에 허용되는 최대 문자 수를 설정해요. 유효한 값은1에서50000000사이예요(포함). 기본값은4096이에요. REST API를 통해 문서 수준 보안(DLS) 쿼리와 같은 큰 자유 형식 값을 제출하는 경우 이 값을 늘리세요. -
plugins.security.restapi.password_validation_regex(Static): 로그인 비밀번호의 기준을 설정하는 정규 표현식을 지정해요. 자세한 내용은 비밀번호 설정을 참조하세요. -
plugins.security.restapi.password_validation_error_message(Static): 비밀번호가 유효성 검사를 통과하지 못할 때 로드되는 오류 메시지를 지정해요. 이 설정은plugins.security.restapi.password_validation_regex와 함께 사용돼요. -
plugins.security.restapi.password_min_length(Static): 점수 기반 비밀번호 강도 추정기를 사용할 때 비밀번호 길이의 최소 문자 수를 설정해요. 기본값은 8이에요. 이것은 최소값이기도 해요. 자세한 내용은 비밀번호 설정을 참조하세요. -
plugins.security.restapi.password_score_based_validation_strength(Static): 비밀번호가 강한지 약한지 결정하는 임계값을 설정해요. 유효한 값은fair,good,strong,very_strong이에요. 이 설정은plugins.security.restapi.password_min_length와 함께 사용돼요. -
plugins.security.unsupported.restapi.allow_securityconfig_modification(Static): 구성 API에 대해 PUT 및 PATCH 메서드 사용을 활성화해요.
고급 설정
Security 플러그인은 다음 고급 설정을 지원해요:
-
plugins.security.authcz.impersonation_dn(Static): 전송 계층 가장을 활성화해요. 이를 통해 DN이 다른 사용자로 가장할 수 있어요. 사용자 가장을 참조하세요. -
plugins.security.authcz.rest_impersonation_user(Static): REST 계층 가장을 활성화해요. 이를 통해 사용자가 다른 사용자로 가장할 수 있어요. 사용자 가장을 참조하세요. -
plugins.security.allow_default_init_securityindex(Static):true로 설정하면 OpenSearch Security는 인덱스가 존재하지 않는 경우/config디렉토리의 파일로 구성 인덱스를 자동으로 초기화해요.이렇게 하면 잘 알려진 기본 비밀번호가 사용돼요. 개인 네트워크/환경에서만 사용하세요. {: .warning}
-
plugins.security.allow_unsafe_democertificates(Static):true로 설정하면 OpenSearch가 데모 인증서로 시작돼요. 이러한 인증서는 데모 목적으로만 발급돼요.이러한 인증서는 잘 알려져 있으므로 프로덕션에 안전하지 않아요. 개인 네트워크/환경에서만 사용하세요. {: .warning}
-
plugins.security.ccs.ignore_source_security_roles(Dynamic):true로 설정하면 원격 클러스터가 교차 클러스터 검색 요청에서 조정 클러스터로부터 전파된 보안 역할을 무시하고 자체roles_mapping.yml구성만 사용하여 액세스를 평가해요. 기본값은false예요. 원격 클러스터 역할 평가를 참조하세요. -
plugins.security.system_indices.permission.enabled(Static): 시스템 인덱스 권한 기능을 활성화해요.true로 설정하면 기능이 활성화되고 역할을 수정할 수 있는 권한이 있는 사용자가 시스템 인덱스에 대한 액세스 권한을 부여하는 권한을 포함하는 역할을 만들 수 있어요.false로 설정하면 권한이 비활성화되고 관리자 인증서가 있는 관리자만 시스템 인덱스를 변경할 수 있어요. 기본적으로 새 클러스터에서는 권한이false로 설정돼요.
전문가 수준 설정
전문가 수준 설정은 해당 기능을 완전히 이해한 관리자만 구성하고 배포해야 해요. 기능을 오해하면 보안 위험이 발생하거나 Security 플러그인이 제대로 작동하지 않거나 데이터 손실이 발생할 수 있어요. {: .warning}
Security 플러그인은 다음과 같은 전문가 수준 설정을 지원해요.
-
plugins.security.config_index_name(Static):.opendistro_security가 구성을 저장하는 인덱스의 이름이에요. -
plugins.security.cert.oid(Static): 서버 노드 인증서의 OID(Object Identifier)를 정의해요. -
plugins.security.cert.intercluster_request_evaluator_class(Static): 인터클러스터 요청을 평가하는 데 사용되는org.opensearch.security.transport.InterClusterRequestEvaluator의 구현을 지정해요.org.opensearch.security.transport.InterClusterRequestEvaluator의 인스턴스는org.opensearch.common.settings.Settings객체를 받는 단일 인자 생성자를 구현해야 해요. -
plugins.security.enable_snapshot_restore_privilege(Static):false로 설정하면 이 설정은 일반 사용자의 스냅샷 복원을 비활성화해요. 이 경우 관리자 TLS 인증서로 서명된 스냅샷 복원 요청만 허용돼요.true(기본값)로 설정하면 일반 사용자가cluster:admin/snapshot/restore,indices:admin/create,indices:data/write/index권한을 가지고 있으면 스냅샷을 복원할 수 있어요.스냅샷은 전역 상태를 포함하지 않고
.opendistro_security인덱스를 복원하지 않는 경우에만 복원할 수 있어요. {: .note} -
plugins.security.check_snapshot_restore_write_privileges(Static):false로 설정하면 추가 인덱스 검사가 생략돼요. 기본값인true로 설정하면 스냅샷 복원 시도가indices:admin/create및"indices:data/write/index에 대해 평가돼요. -
plugins.security.cache.ttl_minutes(Static): 인증 캐싱이 시간 초과될 때까지의 시간을 결정해요. 인증 캐시는 백엔드에서 반환된 사용자 객체를 임시로 저장하여 Security 플러그인이 반복적으로 요청하지 않도록 하여 인증 속도를 높여요. 값을 분 단위로 설정해요. 기본값은60이에요. 값을0으로 설정하면 캐싱을 비활성화해요. -
plugins.security.disabled(Static): OpenSearch Security를 비활성화해요.이 플러그인을 비활성화하면 구성(비밀번호 포함)이 공개될 수 있어요. {:warning}
-
plugins.security.protected_indices.enabled(Static):true로 설정하면 보호된 인덱스를 활성화해요. 보호된 인덱스는 일반 인덱스보다 더 안전해요. 이러한 인덱스는 다른 일반 인덱스와 마찬가지로 액세스하려면 역할이 필요하고 표시되려면 추가 역할이 필요해요. 이 설정은plugins.security.protected_indices.roles및plugins.security.protected_indices.indices설정과 함께 사용돼요. -
plugins.security.protected_indices.roles(Static): 사용자가 보호된 인덱스에 액세스하기 위해 매핑되어야 하는 역할 목록을 지정해요. -
plugins.security.protected_indices.indices(Static): 보호된 것으로 표시할 인덱스 목록을 지정해요. 이러한 인덱스는plugins.security.protected_indices.roles에 지정된 역할에 매핑된 사용자에게만 표시돼요. 이 요구 사항이 충족된 후에도 사용자는 여전히 인덱스에 대한 액세스 권한을 부여하는 데 사용되는 일반 역할에 매핑되어야 해요. -
plugins.security.system_indices.enabled(Static):true로 설정하면 시스템 인덱스를 활성화해요. 시스템 인덱스는 내용이 암호화되지 않는다는 점을 제외하면 보안 인덱스와 유사해요. 시스템 인덱스로 구성된 인덱스는 슈퍼 관리자 또는 시스템 인덱스 권한을 포함하는 역할을 가진 사용자가 액세스할 수 있어요. 시스템 인덱스에 대한 자세한 내용은 시스템 인덱스를 참조하세요. -
plugins.security.system_indices.indices(Static): 시스템 인덱스로 사용할 인덱스 목록이에요. 이 설정은plugins.security.system_indices.enabled설정에 의해 제어돼요. -
plugins.security.allow_default_init_securityindex(Static):true로 설정하면 OpenSearch 시작 시 보안 인덱스 생성 시도가 실패할 경우 Security 플러그인을 기본 보안 설정으로 설정해요. 기본 보안 설정은opensearch-project/security/config디렉터리에 포함된 YAML 파일에 저장돼요. 기본값은false예요. -
plugins.security.cert.intercluster_request_evaluator_class(Static): 인터클러스터 통신을 평가하는 데 사용할 클래스예요. -
plugins.security.enable_snapshot_restore_privilege(Static): 스냅샷 복원 권한 부여를 활성화해요. 선택 사항이에요. 기본값은true예요. -
plugins.security.check_snapshot_restore_write_privileges(Static): 스냅샷 생성 시 쓰기 권한 평가를 적용해요. 기본값은true예요.
다음 비밀번호 해싱 속성 중 하나라도 변경하면 호환성과 보안을 위해 모든 내부 비밀번호를 다시 해시해야 해요. {: .warning}
-
plugins.security.password.hashing.algorithm: (Static): 사용할 비밀번호 해싱 알고리즘을 지정해요. 다음 값이 지원돼요:BCrypt(기본값)PBKDF2(FIPS 140-2 및 FIPS 140-3 준수)Argon2
-
plugins.security.password.hashing.bcrypt.rounds(Static):BCrypt로 비밀번호 해싱에 사용할 라운드 수를 지정해요. 유효한 값은4에서31사이(포함)예요. 기본값은12예요. -
plugins.security.password.hashing.bcrypt.minor(Static): 비밀번호 해싱에 사용할BCrypt알고리즘의 부 버전을 지정해요. 다음 값이 지원돼요:ABY(기본값)
-
plugins.security.password.hashing.pbkdf2.function(Static): 비밀번호에 적용되는 의사 난수 함수를 지정해요. 다음 값이 지원돼요:SHA1SHA224SHA256(기본값)SHA384SHA512
-
plugins.security.password.hashing.pbkdf2.iterations(Static): 의사 난수 함수가 비밀번호에 적용되는 횟수를 지정해요. 기본값은600,000이에요. -
plugins.security.password.hashing.pbkdf2.length(Static): 최종 파생 키의 원하는 길이를 지정해요. 기본값은256이에요. -
plugins.security.password.hashing.argon2.iterations: 알고리즘이 메모리를 통과하는 횟수를 지정해요. 이 값을 늘리면 CPU 계산 시간이 증가하고 무차별 대입 공격에 대한 저항력이 향상돼요. 기본값:3. -
plugins.security.password.hashing.argon2.memory: 해싱 중 사용되는 메모리 양(키비바이트)을 지정해요. 기본값:65536(64 MiB). -
plugins.security.password.hashing.argon2.parallelism: 계산에 사용되는 병렬 스레드 수를 지정해요. 기본값:1. -
plugins.security.password.hashing.argon2.length: 결과 해시 출력의 길이(바이트)를 지정해요. 기본값:32. -
plugins.security.password.hashing.argon2.type: 사용할 Argon2 변형을 지정해요. 다음 값이 지원돼요:Argon2iArgon2dArgon2id(기본값)
-
plugins.security.password.hashing.argon2.version: 사용할 Argon2 버전을 지정해요. 다음 값이 지원돼요:1619(기본값)
감사 로그 설정
Security 플러그인은 다음 감사 로그 설정을 지원해요.
-
plugins.security.audit.enable_rest(Dynamic): REST 요청 로깅을 활성화하거나 비활성화해요. 기본값은true(활성화)예요. -
plugins.security.audit.enable_transport(Dynamic): 전송 수준 요청 로깅을 활성화하거나 비활성화해요. 기본값은false(비활성화)예요. -
plugins.security.audit.resolve_bulk_requests(Dynamic): 벌크 요청 로깅을 활성화하거나 비활성화해요. 활성화하면 벌크 요청 내의 모든 개별 요청도 함께 로깅돼요. 기본값은false(비활성화)예요. -
plugins.security.audit.config.disabled_categories(Dynamic): 지정된 이벤트 범주를 비활성화해요. -
plugins.security.audit.ignore_requests(Dynamic): 지정된 요청을 로깅에서 제외해요. 액션이나 REST 요청 경로를 포함하는 와일드카드와 정규 표현식을 허용해요. -
plugins.security.audit.threadpool.size(Static): 이벤트 로깅에 사용되는 스레드 풀의 스레드 수를 결정해요. 기본값은10이에요. 이 값을0으로 설정하면 스레드 풀이 비활성화되어 플러그인이 이벤트를 동기식으로 로깅해요. -
plugins.security.audit.threadpool.max_queue_len(Static): 스레드당 최대 큐 길이를 설정해요. 기본값은100000이에요. -
plugins.security.audit.ignore_users(Dynamic): 사용자 배열이에요. 목록에 있는 사용자의 감사 요청은 로깅되지 않아요. -
plugins.security.audit.type(Static): 감사 로그 이벤트의 대상이에요. 유효한 값은internal_opensearch,external_opensearch,debug,webhook이에요. -
plugins.security.audit.enable_standalone(Static): 세분화된 액세스 제어 없이 실행되는 클러스터(SSL 전용 또는 보안 비활성화 모드)에 대해 독립형 감사 로깅을 활성화해요. 이 값을true로 설정하고plugins.security.audit.type도 설정하여 독립형 감사 로깅을 활성화하세요. 기본값은false예요. 자세한 내용은 독립형 감사 로깅을 참조하세요. -
plugins.security.audit.config.body_logging_exclusions(Dynamic): 요청 본문 로깅이 억제되는 액션 그룹 이름 또는 원시 액션 및 경로 패턴의 목록이에요. 기본값은[]이며, 모든 요청 본문을 로깅해요. 자세한 내용은 본문 로깅 제외를 참조하세요. -
plugins.security.audit.config.action_groups.<NAME>(Static):body_logging_exclusions와 함께 사용할 액션 및 경로 패턴의 명명된 그룹을 정의해요. 각 그룹은 전송 액션 패턴, REST 경로 또는 둘 다의 쉼표로 구분된 문자열이에요. 와일드카드를 지원해요. -
plugins.security.audit.config.log4j.enable_mdc_routing(Static): Log4j 감사 싱크에 대해 MDC(Mapped Diagnostic Context) 라우팅을 활성화해요. 활성화하면 감사 이벤트가audit_category,audit_action,audit_user,audit_request_typeMDC 키를 설정하며, Log4j 라우팅 어펜더가 이를 사용할 수 있어요. 기본값은false예요. -
plugins.security.audit.config.http_endpoints(Static):localhost에 대한 엔드포인트 목록이에요. -
plugins.security.audit.config.index(Static): 감사 로그 인덱스예요. 기본값은 날짜 롤링 패턴"'security-auditlog-'YYYY.MM.dd"이며, 매일 새 인덱스를 생성해요(예:security-auditlog-2023.06.15). 대신 고정 인덱스 이름을 지정할 수도 있어요. 어떤 경우든 인덱스를 적절히 보호해야 해요. -
plugins.security.audit.config.type(Static): 감사 로그 유형을auditlog로 지정해요. -
plugins.security.audit.config.username(Static): 감사 로그 구성의 사용자 이름이에요. -
plugins.security.audit.config.password(Static): 감사 로그 구성의 비밀번호예요. -
plugins.security.audit.config.enable_ssl(Static): 감사 로깅에 SSL을 활성화하거나 비활성화해요. -
plugins.security.audit.config.verify_hostnames(Static): SSL/TLS 인증서의 호스트 이름 확인을 활성화하거나 비활성화해요. 기본값은true(활성화)예요. -
plugins.security.audit.config.enable_ssl_client_auth(Static): SSL/TLS 클라이언트 인증을 활성화하거나 비활성화해요. 기본값은false(비활성화)예요. -
plugins.security.audit.config.cert_alias(Static): 감사 로그 액세스에 사용되는 인증서의 별칭이에요. -
plugins.security.audit.config.pemkey_filepath(Static): 감사 로깅에 사용되는 PEM(Privacy Enhanced Mail) 키의/config상대 파일 경로예요. -
plugins.security.audit.config.pemkey_content(Static): 감사 로깅에 사용되는 PEM 키의 Base64 인코딩 콘텐츠예요....config.pemkey_filepath의 대안이에요. -
plugins.security.audit.config.pemkey_password(Static): 클라이언트가 사용하는 PEM 형식 개인 키의 비밀번호예요. -
plugins.security.audit.config.pemcert_filepath(Static): 감사 로깅에 사용되는 PEM 인증서의/config상대 파일 경로예요. -
plugins.security.audit.config.pemcert_content(Static): 감사 로깅에 사용되는 PEM 인증서의 Base64 인코딩 콘텐츠예요....config.pemcert_filepath로 파일 경로를 지정하는 대안이에요. -
plugins.security.audit.config.pemtrustedcas_filepath(Static): 신뢰할 수 있는 루트 인증 기관의/config상대 파일 경로예요. -
plugins.security.audit.config.pemtrustedcas_content(Static): 루트 인증 기관의 Base64 인코딩 콘텐츠예요....config.pemtrustedcas_filepath의 대안이에요. -
plugins.security.audit.config.webhook.url(Static): 웹훅 URL이에요. -
plugins.security.audit.config.webhook.format(Static): 웹훅에 사용되는 형식이에요. 유효한 값은URL_PARAMETER_GET,URL_PARAMETER_POST,TEXT,JSON,SLACK이에요. -
plugins.security.audit.config.webhook.ssl.verify(Static): 웹훅 요청과 함께 전송되는 SSL/TLS 인증서의 확인을 활성화하거나 비활성화해요. 기본값은true(활성화)예요. -
plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepath(Static): 웹훅 요청을 확인할 때 사용하는 신뢰할 수 있는 인증 기관의/config상대 파일 경로예요. -
plugins.security.audit.config.webhook.ssl.pemtrustedcas_content(Static): 웹훅 요청을 확인하는 데 사용되는 인증 기관의 Base64 인코딩 콘텐츠예요....config.pemtrustedcas_filepath의 대안이에요. -
plugins.security.audit.config.log4j.logger_name(Static): Log4j 로거의 사용자 지정 이름이에요. -
plugins.security.audit.config.log4j.level(Static): Log4j 로거의 기본 로그 수준을 제공해요. 유효한 값은OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL이에요. 기본값은INFO예요. -
opendistro_security.audit.config.disabled_rest_categories(Dynamic): 로거가 무시할 REST 범주 목록이에요. 유효한 값은AUTHENTICATED와GRANTED_PRIVILEGES예요. -
opendistro_security.audit.config.disabled_transport_categories(Dynamic): 로거가 무시할 전송 계층 범주 목록이에요. 유효한 값은AUTHENTICATED와GRANTED_PRIVILEGES예요.
세분화된 액세스 제어(FGAC)가 활성화되면 동적 감사 필터 설정이나 plugins.security.audit.compliance.* 설정을 업데이트하는 PUT _cluster/settings 요청은 호출자가 plugins.security.restapi.roles_enabled에 나열된 역할을 보유하지 않은 경우 거부돼요. 이 제한은 SSL 전용 또는 보안 비활성화 모드에서는 적용되지 않아요. plugins.security.audit.config.body_logging_exclusions 및 plugins.security.audit.config.action_groups.<NAME> 설정은 예외이며 상위 역할이 필요하지 않아요.
다음 표는 각 모드에서 호출자가 GET _cluster/settings를 사용하여 읽을 수 있는 감사 설정을 설명해요.
| 모드 | 설정 응답에서 볼 수 있는 감사 설정 |
|---|---|
| SSL 전용 | 모든 호출자가 plugins.security.audit.config.* 및 plugins.security.audit.compliance.* 아래의 비밀 아닌 동적 구성을 읽을 수 있어요. 자격 증명을 포함하는 싱크 설정은 숨겨진 상태로 유지돼요. |
| 보안 비활성화 | plugins.security.audit.* 설정이 필터링되지 않으므로 싱크 자격 증명과 PEM 콘텐츠가 표시될 수 있어요. |
| FGAC | 모든 호출자에 대해 전체 plugins.security.audit.* 하위 트리가 필터링돼요. 이 필터링은 역할 기반이 아니에요. |
호스트 이름 확인 및 DNS 조회 설정
Security 플러그인은 다음 호스트 이름 확인 및 DNS 조회 설정을 지원해요.
-
transport.ssl.enforce_hostname_verification(Static): 전송 계층에서 호스트 이름을 확인할지 여부예요. 선택 사항이에요. 기본값은true예요. -
transport.ssl.resolve_hostname(Static): 전송 계층에서 DNS에 대해 호스트 이름을 확인할지 여부예요. 선택 사항이에요. 기본값은true예요. 호스트 이름 확인이 활성화된 경우에만 작동해요.
자세한 내용은 호스트 이름 확인 및 DNS 조회를 참조하세요.
클라이언트 인증 설정
Security 플러그인은 다음 클라이언트 인증 설정을 지원해요.
plugins.security.ssl.http.clientauth_mode(Static): 사용할 TLS 클라이언트 인증 모드예요. 유효한 값은OPTIONAL(기본값),REQUIRE,NONE이에요. 선택 사항이에요.
자세한 내용은 클라이언트 인증을 참조하세요.
활성화된 암호 및 프로토콜 설정
Security 플러그인은 다음 활성화된 암호 및 프로토콜 설정을 지원해요. 각 설정은 배열로 표현해야 해요.
-
plugins.security.ssl.http.enabled_ciphers(Static): REST 계층에 대해 활성화된 TLS 암호화 제품군이에요. Java 형식만 지원해요. -
plugins.security.ssl.http.enabled_protocols(Static): REST 계층에 대해 활성화된 TLS 프로토콜이에요. Java 형식만 지원해요. -
plugins.security.ssl.transport.enabled_ciphers(Static): 전송 계층에 대해 활성화된 TLS 암호화 제품군이에요. Java 형식만 지원해요. -
plugins.security.ssl.transport.enabled_protocols(Static): 전송 계층에 대해 활성화된 TLS 프로토콜이에요. Java 형식만 지원해요.
자세한 내용은 활성화된 암호 및 프로토콜을 참조하세요.
키스토어 및 트러스트스토어 파일---전송 계층 TLS 설정
Security 플러그인은 다음 전송 계층 TLS 키스토어 및 트러스트스토어 설정을 지원해요.
-
plugins.security.ssl.transport.keystore_type(Static): 키스토어 파일의 유형이에요. 선택 사항이에요. 유효한 값은JKS또는PKCS12/PFX예요. 기본값은JKS예요. -
plugins.security.ssl.transport.keystore_filepath(Static): 키스토어 파일의 경로예요.config디렉터리 아래에 있어야 하며 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.transport.keystore_alias(Static): 키스토어 별칭 이름이에요. 선택 사항이에요. 기본값은 첫 번째 별칭이에요. -
plugins.security.ssl.transport.keystore_password(Static): 키스토어 비밀번호예요. 기본값은changeit이에요. -
plugins.security.ssl.transport.truststore_type(Static): 트러스트스토어 파일의 유형이에요. 선택 사항이에요. 유효한 값은JKS또는PKCS12/PFX예요. 기본값은JKS예요. -
plugins.security.ssl.transport.truststore_filepath(Static): 트러스트스토어 파일의 경로예요.config디렉터리 아래에 있어야 하며 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.transport.truststore_alias(Static): 트러스트스토어 별칭 이름이에요. 선택 사항이에요. 기본값은 모든 인증서예요. -
plugins.security.ssl.transport.truststore_password(Static): 트러스트스토어 비밀번호예요. 기본값은changeit이에요.
키스토어 및 트러스트스토어 파일에 대한 자세한 내용은 전송 계층 TLS를 참조하세요.
키스토어 및 트러스트스토어 파일---REST 계층 TLS 설정
Security 플러그인은 다음 REST 계층 TLS 키스토어 및 트러스트스토어 설정을 지원해요.
-
plugins.security.ssl.http.enabled(Static): REST 계층에서 TLS를 활성화할지 여부예요. 활성화하면 HTTPS만 허용돼요. 선택 사항이에요. 기본값은false예요. -
plugins.security.ssl.http.keystore_type(Static): 키스토어 파일의 유형이에요. 선택 사항이에요. 유효한 값은JKS또는PKCS12/PFX예요. 기본값은JKS예요. -
plugins.security.ssl.http.keystore_filepath(Static): 키스토어 파일의 경로예요.config디렉터리 아래에 있어야 하며 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.http.keystore_alias(Static): 키스토어 별칭 이름이에요. 선택 사항이에요. 기본값은 첫 번째 별칭이에요. -
plugins.security.ssl.http.keystore_password: 키스토어 비밀번호예요. 기본값은changeit이에요. -
plugins.security.ssl.http.truststore_type: 트러스트스토어 파일의 유형이에요. 선택 사항이에요. 유효한 값은JKS또는PKCS12/PFX예요. 기본값은JKS예요. -
plugins.security.ssl.http.truststore_filepath: 트러스트스토어 파일의 경로예요.config디렉터리 아래에 있어야 하며 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.http.truststore_alias(Static): 트러스트스토어 별칭 이름이에요. 선택 사항이에요. 기본값은 모든 인증서예요. -
plugins.security.ssl.http.truststore_password(Static): 트러스트스토어 비밀번호예요. 기본값은changeit이에요.
자세한 내용은 REST 계층 TLS를 참조하세요.
X.509 PEM 인증서와 PKCS #8 키---전송 계층 TLS 설정
Security 플러그인은 X.509 PEM 인증서와 PKCS #8 키와 관련된 다음과 같은 전송 계층 TLS 설정을 지원해요.
-
plugins.security.ssl.transport.pemkey_filepath(Static): 인증서 키 파일(PKCS #8)의 경로예요.config디렉터리 아래에 있어야 하며, 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.transport.pemkey_password(Static): 키 비밀번호예요. 키에 비밀번호가 없으면 이 설정을 생략해요. 선택사항이에요. -
plugins.security.ssl.transport.pemcert_filepath(Static): X.509 노드 인증서 체인(PEM 형식)의 경로예요.config디렉터리 아래에 있어야 하며, 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.transport.pemtrustedcas_filepath(Static): 루트 인증 기관(PEM 형식)의 경로예요.config디렉터리 아래에 있어야 하며, 상대 경로로 지정해요. 필수예요.
자세한 내용은 REST 레이어 TLS를 참고해요.
X.509 PEM 인증서와 PKCS #8 키---REST 레이어 TLS 설정
Security 플러그인은 X.509 PEM 인증서와 PKCS #8 키와 관련된 다음과 같은 REST 레이어 TLS 설정을 지원해요.
-
plugins.security.ssl.http.enabled(Static): REST 레이어에서 TLS를 활성화할지 여부예요. 활성화하면 HTTPS만 허용해요. 선택사항이에요. 기본값은false예요. -
plugins.security.ssl.http.pemkey_filepath(Static): 인증서 키 파일(PKCS #8)의 경로예요.config디렉터리 아래에 있어야 하며, 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.http.pemkey_password(Static): 키 비밀번호예요. 키에 비밀번호가 없으면 이 설정을 생략해요. 선택사항이에요. -
plugins.security.ssl.http.pemcert_filepath(Static): X.509 노드 인증서 체인(PEM 형식)의 경로예요.config디렉터리 아래에 있어야 하며, 상대 경로로 지정해요. 필수예요. -
plugins.security.ssl.http.pemtrustedcas_filepath: 루트 인증 기관(PEM 형식)의 경로예요.config디렉터리 아래에 있어야 하며, 상대 경로로 지정해요. 필수예요.
자세한 내용은 REST 레이어 TLS를 참고해요.
전송 계층 보안 설정
Security 플러그인은 다음과 같은 전송 계층 보안 설정을 지원해요.
-
plugins.security.ssl.transport.enabled(Static): REST 레이어에서 TLS를 활성화할지 여부예요. -
plugins.security.ssl.transport.client.pemkey_password(Static): 전송 클라이언트가 사용하는 PEM 형식 개인 키의 비밀번호예요. -
plugins.security.ssl.transport.keystore_keypassword(Static): 키스토어 내 키의 비밀번호예요. -
plugins.security.ssl.transport.server.keystore_keypassword(Static): 서버 키스토어 내 키의 비밀번호예요. -
plugins.sercurity.ssl.transport.server.keystore_alias(Static): 서버 키스토어의 별칭 이름이에요. -
plugins.sercurity.ssl.transport.client.keystore_alias(Static): 클라이언트 키스토어의 별칭 이름이에요. -
plugins.sercurity.ssl.transport.server.truststore_alias(Static): 서버 트러스트스토어의 별칭 이름이에요. -
plugins.sercurity.ssl.transport.client.truststore_alias(Static): 클라이언트 트러스트스토어의 별칭 이름이에요. -
plugins.security.ssl.client.external_context_id(Static): 전송 클라이언트에 외부 SSL 컨텍스트에 사용할 ID를 제공해요. -
plugins.secuirty.ssl.transport.principal_extractor_class(Static): 인증서의 사용자 지정 부분을 주체로 사용하도록 추출기를 구현하는 클래스를 지정해요. -
plugins.security.ssl.http.crl.file_path(Static): 인증서 해지 목록 파일의 경로예요. -
plugins.security.ssl.http.crl.validate(Static): 인증서 해지 목록(CRL) 검증을 활성화해요. 기본값은false(비활성화)예요. -
plugins.security.ssl.http.crl.prefer_crlfile_over_ocsp(Static): 인증서에 둘 다 포함된 경우 CRL 인증서 항목을 OCSP(Online Certificate Status Protocol) 항목보다 선호할지 여부예요. 선택사항이에요. 기본값은false예요. -
plugins.security.ssl.http.crl.check_only_end_entitites(Static):true이면 리프 인증서만 검증해요. 기본값은true예요. -
plugins.security.ssl.http.crl.disable_ocsp(Static): OCSP를 비활성화해요. 기본값은false(OCSP 활성화)예요. -
plugins.security.ssl.http.crl.disable_crldp(Static): 인증서의 CRL 엔드포인트를 비활성화해요. 기본값은false(CRL 엔드포인트 활성화)예요. -
plugins.security.ssl.allow_client_initiated_renegotiation(Static): 클라이언트 재협상을 활성화하거나 비활성화해요. 기본값은false(클라이언트 시작 재협상 허용 안 함)예요. -
plugins.security_config.ssl_dual_mode_enabled(Static): 이중 모드 SSL을 활성화해서 노드가 전송 계층에서 암호화된(TLS) 트래픽과 암호화되지 않은 트래픽을 모두 수락할 수 있게 해요.true로 설정하면 노드가 SSL 또는 비SSL 연결을 사용하여 다른 노드와 통신할 수 있어요. 이 설정은 롤링 재시작 과정을 통해 클러스터를 보안 비활성화 상태에서 보안 활성화 상태로 마이그레이션하는 등의 전환 시나리오를 위해 설계되었어요. 이 설정은 프로덕션 환경에서 무기한 사용하면 안 돼요. 마이그레이션 중에만 일시적으로 사용하고, 클러스터의 모든 노드가 동일한 보안 구성을 사용하게 되면 비활성화해요. 기본값은false예요.
Security 플러그인 설정 예시
# Common configuration settings
plugins.security.nodes_dn:
- "CN=*.example.com, OU=SSL, O=Test, L=Test, C=DE"
- "CN=node.other.com, OU=SSL, O=Test, L=Test, C=DE"
- "CN=node.example.com, OU=SSL\\, Inc., L=Test, C=DE" # escape additional comma with `\\`
plugins.security.authcz.admin_dn:
- CN=kirk,OU=client,O=client,L=test, C=de
plugins.security.roles_mapping_resolution: MAPPING_ONLY
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
transport.ssl.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.nodes_dn_dynamic_config_enabled: false
plugins.security.cert.intercluster_request_evaluator_class: # need example value for this.
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opendistro-notifications-*", ".opendistro-notebooks", ".opendistro-asynchronous-search-response*"]
node.max_local_storage_nodes: 3
plugins.security.restapi.password_validation_regex: '(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}'
plugins.security.restapi.password_validation_error_message: "Password must be minimum 8 characters long and must contain at least one uppercase letter, one lowercase letter, one digit, and one special character."
plugins.security.allow_default_init_securityindex: true
plugins.security.cache.ttl_minutes: 60
#
# REST Management API configuration settings
plugins.security.restapi.roles_enabled: ["all_access","xyz_role"]
plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT","POST","DELETE"] # Alternative example: plugins.security.restapi.endpoints_disabled.xyz_role.INTERNALUSERS: ["DELETE"] #
# Audit log configuration settings
plugins.security.audit.enable_rest: true
plugins.security.audit.enable_transport: false
plugins.security.audit.resolve_bulk_requests: false
plugins.security.audit.config.disabled_categories: ["AUTHENTICATED","GRANTED_PRIVILEGES"]
plugins.security.audit.ignore_requests: ["indices:data/read/*","*_bulk"]
plugins.security.audit.threadpool.size: 10
plugins.security.audit.threadpool.max_queue_len: 100000
plugins.security.audit.ignore_users: ['kibanaserver','some*user','/also.*regex possible/']
plugins.security.audit.type: internal_opensearch
#
# external_opensearch settings
plugins.security.audit.config.http_endpoints: ['localhost:9200','localhost:9201','localhost:9202']
plugins.security.audit.config.index: "'security-auditlog-'2023.06.15"
plugins.security.audit.config.type: auditlog
plugins.security.audit.config.username: auditloguser
plugins.security.audit.config.password: auditlogpassword
plugins.security.audit.config.enable_ssl: false
plugins.security.audit.config.verify_hostnames: false
plugins.security.audit.config.enable_ssl_client_auth: false
plugins.security.audit.config.cert_alias: mycert
plugins.security.audit.config.pemkey_filepath: key.pem
plugins.security.audit.config.pemkey_content: <...pem base 64 content>
plugins.security.audit.config.pemkey_password: secret
plugins.security.audit.config.pemcert_filepath: cert.pem
plugins.security.audit.config.pemcert_content: <...pem base 64 content>
plugins.security.audit.config.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.pemtrustedcas_content: <...pem base 64 content>
#
# Webhook settings
plugins.security.audit.config.webhook.url: "http://mywebhook/endpoint"
plugins.security.audit.config.webhook.format: JSON
plugins.security.audit.config.webhook.ssl.verify: false
plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.webhook.ssl.pemtrustedcas_content: <...pem base 64 content>
#
# log4j settings
plugins.security.audit.config.log4j.logger_name: auditlogger
plugins.security.audit.config.log4j.level: INFO
#
# Advanced configuration settings
plugins.security.authcz.impersonation_dn:
"CN=spock,OU=client,O=client,L=Test,C=DE":
- worf
"cn=webuser,ou=IT,ou=IT,dc=company,dc=com":
- user2
- user1
plugins.security.authcz.rest_impersonation_user:
"picard":
- worf
"john":
- steve
- martin
plugins.security.allow_default_init_securityindex: false
plugins.security.allow_unsafe_democertificates: false
plugins.security.cache.ttl_minutes: 60
plugins.security.restapi.password_validation_regex: '(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}'
plugins.security.restapi.password_validation_error_message: "A password must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one digit, and one special character."
plugins.security.restapi.password_min_length: 8
plugins.security.restapi.password_score_based_validation_strength: very_strong
#
# Advanced SSL settings - use only if you understand SSL ins and outs
plugins.security.ssl.transport.client.pemkey_password: superSecurePassword1
plugins.security.ssl.transport.keystore_keypassword: superSecurePassword2
plugins.security.ssl.transport.server.keystore_keypassword: superSecurePassword3
plugins.security.ssl.http.keystore_keypassword: superSecurePassword4
plugins.security.ssl.http.clientauth_mode: REQUIRE
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.server.keystore_alias: my_alias
plugins.security.ssl.transport.client.keystore_alias: my_other_alias
plugins.security.ssl.transport.server.truststore_alias: trustore_alias_1
plugins.security.ssl.transport.client.truststore_alias: trustore_alias_2
plugins.security.ssl.client.external_context_id: my_context_id
plugins.security.ssl.transport.principal_extractor_class: org.opensearch.security.ssl.ExampleExtractor
plugins.security.ssl.http.crl.file_path: ssl/crl/revoked.crl
plugins.security.ssl.http.crl.validate: true
plugins.security.ssl.http.crl.prefer_crlfile_over_ocsp: true
plugins.security.ssl.http.crl.check_only_end_entitites: false
plugins.security.ssl.http.crl.disable_ocsp: true
plugins.security.ssl.http.crl.disable_crldp: true
plugins.security.ssl.allow_client_initiated_renegotiation: true
#
# Expert settings - use only if you understand their use completely: accidental values can potentially cause security risks or failures to OpenSearch Security.
plugins.security.config_index_name: .opendistro_security
plugins.security.cert.oid: '1.2.3.4.5.5'
plugins.security.cert.intercluster_request_evaluator_class: org.opensearch.security.transport.DefaultInterClusterRequestEvaluator
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60
plugins.security.disabled: false
plugins.security.protected_indices.enabled: true
plugins.security.protected_indices.roles: ['all_access']
plugins.security.protected_indices.indices: []
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: ['.opendistro-alerting-config', '.opendistro-ism-*', '.opendistro-reports-*', '.opensearch-notifications-*', '.opensearch-notebooks', '.opensearch-observability', '.opendistro-asynchronous-search-response*', '.replication-metadata-store']
{% include copy.html %}