API 보안

API를 호출할 수 있는 사용자 및 사용자가 보유해야 하는 권한을 제어하는 데 도움이 되는 두 개의 서로 다른 레벨로 API를 보안할 수 있습니다.

API를 호출할 때 다음 두 단계 보안을 통과해야 합니다.

  1. 사용자 ID, 인증서 또는 둘 다를 사용하는 인증입니다. 다른 API를 호출하기 전에 로그인 API를 호출합니다.
  2. 액세스할 수 있는 API를 확인하는 권한입니다.

이 보안 프로시저는 애플리케이션 서버 프로세스를 통해 만든 모든 API 호출에 적용됩니다. 기본적으로 에이전트 및 통합유틸리티 서버군은 항상 API에 전체 액세스할 수 있습니다.

인증 확인을 통과하고 나면 승인 확인에서 사용자가 액세스할 수 있는 API 및 자원을 판별합니다. 사용자 인터페이스(UI) 보안 외에 이 승인 확인이 추가되었습니다. 예를 들어, UI 보안은 사용자를 나열하는 화면에 액세스하는 데 도움이 될 수 있습니다. 화면에서 사용자 목록을 생성하려면 사용자를 나열하는 getUserList API에 대한 권한 검사를 통과해야 할 수도 있습니다.

승인 확인의 다른 예는 다음과 같습니다.
  • 표시 목적으로 getCommonCodeList API를 사용하는 경우 API의 출력에서 명시적으로 제한되는 사용자 정보를 가져올 수 없어야 합니다.
  • 경보를 지정하기 전에 getUserList API를 호출하는 경우 사용자 비밀번호를 가져올 수 없어야 합니다.
  • UserHierarchy API를 사용하여 비밀번호를 변경하는 경우 다음을 수행하십시오.
    • 자신의 IsSuperUser 플래그를 변경할 수 없어야 합니다.
    • 다른 사용자의 정보를 수정할 수 없어야 합니다.
    • 더 많은 사용자 그룹에 등록할 수 없어야 합니다. 그러면 더 많은 시스템 액세스가 제공됩니다.

이 보안은 apisecurity 템플리트 파일을 사용하여 구현됩니다. 이 apisecurity 템플리트 파일은 (기본적으로) 모든 API가 제한된 입력 및 출력 요소를 설명한 XML 문서입니다. 문서 생성이 꺼져 있더라도 XAPI 배치 동안 이 파일이 자동으로 생성됩니다.

참고: 서비스는 apisecurity 파일을 사용하지 않습니다.

입력 및 출력 승인 확인에 템플리트가 사용됩니다. 이 템플리트가 일반 템플리트보다 우선합니다.

예를 들어, OrganizationCode=#PROHIBITED# IsSuperUser=#PROHIBITED# 행이 있는 입력 템플리트에서는 추가 사용자 그룹에 등록하고 추가 권한을 획득할 수 없습니다.

출력 템플리트는 기본 문서 기반 템플리트가 수행하는 필터링을 보완합니다. apisecurity 파일에 구성되어 있지 않아 요소가 제한될 경우 해당 요소가 문서 기반 템플리트에 있더라도 출력에 리턴되지 않습니다.

참고: 입력 및 출력의 특정 지점에서 multiApigetPage 와 같은 API에는 모든 요소에 대한 권한 부여 액세스 권한이 있습니다. 그러나 이 API가 호출하는 다른 API는 승인 확인을 통과해야 합니다.

API 보안 및 권한 레벨에 대한 액세스는 yfs.properties 파일의 다음 프로퍼티에서 제어합니다. 모든 승인 실패가 sci.apisecurity라는 로그 작성 카테고리에 기록됩니다.

  • api.security.enabled
    • Y(기본값) — API 보안 사용
    • N — API 보안 사용 안함
  • api.security.mode
    • STRICT — 유효성 검증에 실패하면 예외를 발생시킵니다. 모든 권한이 올바르게 구성된 경우 프로덕션 시스템에 적합합니다.
    • LAX — 유효하지 않은 입력을 필터링하고 로그에 작성하지만 계속 처리합니다. 필터링을 사용하면 잘못된 입력 또는 출력에도 시스템이 대부분 작동할 수 있고 로그 작성은 변경해야 하는 지점을 식별하도록 도와 줍니다.
      참고: 필터링이 모호한 동작을 생성하는 경우 시스템은 여전히 예외를 처리할 수 있습니다.
    • DEBUG — 유효하지 않은 입력 및 출력을 로그에 작성하지만 필터링하거나 예외를 발생시키지 않습니다. 이는 다양한 프로세스에 필요한 권한을 식별하기 위해 초기 개발 중에만 적합합니다.

보안 모드를 지정하지 않으면 필터링, 예외 발생 또는 승인 확인이 없습니다. 제한된 로그 작성만 가능합니다.

  • api.security.override. apiName.mode

    개별 API에 대한 권한을 재설정하려면 이 설정을 사용하십시오. 이 프로퍼티는 api.security.mode와 동일한 값을 사용합니다.

  • api.security.smc.enabled
    • Y- 애플리케이션 관리자 에 대한 API 보안 사용
    • N (기본값) - 애플리케이션 관리자 에 대해 API 보안을 사용하지 않습니다.
  • api.security.console.enabled
    • Y — 애플리케이션 콘솔에 API 보안을 사용합니다.
    • N(기본값) — 애플리케이션 콘솔에 API 보안을 사용하지 않습니다.

업그레이드할 때 초기에 이 기능을 사용 불가능하게 하고 프로퍼티를 통해 모든 액세스 권한을 부여해야 합니다. 업그레이드된 시스템에서 권한을 정의하고 테스트할 때 한 번에 한 개 API에 보안을 설정하여 이 기능을 단계적으로 활성화합니다. 보안을 사용하도록 설정한 경우, 시스템 사용자 그룹에만 API에 대한 권한이 부여되고 다른 모든 사용자 정의 사용자 그룹에는 그룹에 맞는 적절한 권한이 부여되어야 합니다. 사용자 그룹 권한에 대한 정보는 조직 모델링 정보를 참조하십시오.