사용자 지정 규정 준수 컨텐츠를 통해 자체 보안 표준을 정의하여, SaltStack SecOps Compliance에 내장된 보안 벤치마크 및 검사 라이브러리를 보완할 수 있습니다. 사용자 지정 컨텐츠는 내부 요구 사항에 맞게 SaltStack SecOps Compliance 정책을 개선하는 데 유용합니다.

검사는 SaltStack SecOps Compliance가 규정 준수 여부를 평가하는 보안 표준입니다. 벤치마크는 보안 검사의 범주입니다.

SaltStack SecOps Compliance에는 사용자 지정 보안 컨텐츠를 직접 생성, 테스트 및 구축하는 데 사용할 수 있는 사용자 지정 컨텐츠 SDK(소프트웨어 개발 키트)가 포함되어 있습니다. 평가 및 업데이트 적용을 위해 사용자 지정 보안 컨텐츠를 가져와서 SaltStack SecOps Compliance 기본 제공 보안 라이브러리와 함께 사용할 수 있습니다. 사용자 지정 컨텐츠를 가져오는 기능을 통해 원하는 버전 제어 시스템을 사용하여 컨텐츠 버전을 지정할 수도 있습니다.

사용자 지정 검사를 사용하려면 먼저 SaltStack SecOps Compliance 사용자 지정 컨텐츠 SDK를 초기화합니다. SDK에는 샘플 파일이 포함되어 있으며, 이것을 수정하여 자체 사용자 지정 검사는 물론 벤치마크를 생성할 수 있습니다. SDK에는 새 컨텐츠를 테스트할 수 있는 Docker 기반 테스트 환경도 포함되어 있습니다.

사용자 지정 컨텐츠를 생성하고 테스트한 후에는 컨텐츠 파일을 구축하고 SaltStack SecOps Compliance로 가져와서 평가 및 업데이트 적용을 시작할 수 있습니다. SaltStack 검사에는 built-in-checks-shield-icon 아이콘이 포함되지만 사용자 지정 검사에는 사용자 아이콘(custom-checks-user-icon)이 포함됩니다. SaltStack SecOps Compliance는 사용자 지정 컨텐츠와 정책 간의 종속성 추적하여, 컨텐츠를 삭제하면 중단될 수 있는 종속성 목록을 제공합니다.

사전 요구 사항

  • SaltStack SecOps Compliance 사용자 지정 컨텐츠 SDK를 다운로드합니다.
  • Docker를 설치합니다. 자세한 내용은 Docker 설치 설명서를 참조하십시오.

SDK 초기화

  1. 명령줄에서 파일이 포함된 디렉토리로 이동하고 OS에 따라 다음을 실행합니다.
    • Mac OS 또는 Linux
      ./secops_sdk init
    • Windows
      secops_sdk.exe init

    출력은 표시되지 않습니다. 예상된 결과입니다. 이제 디렉토리에 다음 폴더 및 파일이 포함됩니다.

    • benchmarks
    • salt/locke/custom
    • sample_tests
    • README.md

    이러한 폴더 및 파일에 대한 자세한 내용은 폴더 및 파일 항목을 참조하십시오.

  2. (선택 사항) 변경 내용을 버전 제어 저장소에 커밋합니다.

사용자 지정 검사 생성

참고:

SDK 초기화는 사용자 지정 컨텐츠를 생성하기 위한 사전 요구 사항입니다. SDK 초기화의 내용을 참조하십시오.

  1. 사용자 지정 컨텐츠 SDK에서 salt/locke/custom으로 이동합니다. 이 디렉토리는 샘플 상태(.sls) 및 메타(.meta) 파일이 포함된 다양한 하위 디렉토리를 포함합니다.
    참고: 모든 사용자 지정 검사는 상태( .sls) 파일과 해당 메타( .meta) 파일 모두에서 구성해야 합니다.
  2. 샘플 상태(.sls) 파일과 해당 메타(.meta) 파일의 복사본을 만들고 두 파일의 이름을 사용자 지정 검사를 설명하는 이름으로 변경합니다.

    검사와 연결된 두 파일은 동일한 디렉토리에 있어야 하며 동일한 이름으로 시작해야 합니다. 예를 들면:

    • my_first_check.meta
    • my_first_check.sls

    두 파일은 salt/locke/custom의 하위 디렉토리에 함께 저장합니다.

  3. 메타 파일의 컨텐츠를 편집하여 필요에 따라 검사를 사용자 지정합니다. 이 파일은 YAML 형식으로 작성됩니다. 파일에 포함된 다양한 옵션 목록은 폴더 및 파일 항목을 참조하십시오.
    참고: 검사 메타 파일에 다양한 벤치마크에 대한 참조가 포함되어 있습니다. 사용자 지정 컨텐츠를 생성하는 경우에는 검사 메타 파일에 관련 벤치마크를 모두 포함해야 합니다.
  4. 상태 파일의 컨텐츠를 편집합니다. 자세한 내용은 폴더 및 파일 항목을 참조하십시오.
  5. 두 파일이 동일한 디렉토리에 저장되어 있는지 확인합니다.

    이제 사용자 지정 검사를 생성하는 데 필요한 최소 단계를 완료했습니다. 계속해서 검사를 테스트하거나, 버전 제어에 커밋하거나, 컨텐츠 라이브러리를 구축할 수 있습니다.

사용자 지정 벤치마크 생성

참고: SDK 초기화는 사용자 지정 컨텐츠를 생성하기 위한 사전 요구 사항입니다. SDK 초기화의 내용을 참조하십시오.
  1. 사용자 지정 컨텐츠 SDK에서 benchmarks 디렉토리로 이동합니다. 여기에는 샘플 벤치마크 메타(.meta) 파일이 포함되어 있습니다.
  2. Sample_Benchmark.meta의 사본을 만들고 사본의 이름을 벤치마크를 설명하는 이름으로 변경합니다.
  3. 메타 파일의 컨텐츠를 편집하여 필요에 따라 벤치마크를 사용자 지정합니다. 이 파일은 YAML 형식으로 작성됩니다. 파일에 포함된 다양한 옵션에 대한 설명은 폴더 및 파일 항목을 참조하십시오.

사용자 지정 컨텐츠 테스트

참고: Docker 설치는 다음을 수행하기 위한 사전 요구 사항입니다. Docker 다운로드 및 설치에 대한 자세한 내용은 Docker 설치 설명서를 참조하십시오.
  1. 사용자 지정 컨텐츠를 생성한 후에는 명령줄을 열고 사용자 지정 컨텐츠 SDK sample_tests 디렉토리로 이동합니다.
  2. 테스트를 위해 Salt로 CentOS7의 Docker 이미지를 구축합니다.
    ./build.sh
  3. 테스트 컨테이너를 시작합니다.
    ./up.sh
  4. salt/locke/custom 디렉토리에서 생성한 검사에 대해 샘플 테스트를 실행합니다. 일반적인 Salt 상태와 마찬가지로 사용자 지정 검사를 실행할 수 있습니다. 예를 들면:
    ./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True

    더 많은 테스트 예제는 SDK README에서 사용자 지정 컨텐츠 테스트를 참조하십시오. Salt 상태에 대한 자세한 내용은 Salt 설명서: Salt 상태를 사용하는 방법을 참조하십시오.

  5. 테스트가 완료되면 테스트 컨테이너를 종료합니다.
    ./down.sh

사용자 지정 컨텐츠 라이브러리 구축

  1. 사용자 지정 컨텐츠를 생성한 후에는 명령줄을 열고 사용자 지정 컨텐츠 SDK 루트 디렉토리로 이동합니다.
  2. 사용자 지정 컨텐츠 라이브러리를 구축합니다.
    ./secops_sdk build -a

    이제 SDK 루트 디렉토리에 _dist 하위 디렉토리가 포함됩니다. 여기에는 SaltStack Config 사용자 인터페이스 또는 API(RaaS)를 통해 컨텐츠를 가져오는 데 사용할 수 있는 두 개의 tar.gz 파일이 포함됩니다. 디렉토리에 포함된 모든 파일에 대한 설명은 폴더 및 파일 항목을 참조하십시오.

사용자 지정 컨텐츠 가져오기

  1. 사이드 메뉴에서 관리 > SecOps를 클릭합니다.
  2. 규정 준수 컨텐츠 - SaltStack 아래에서 업데이트 확인을 클릭합니다.
    참고: 현재 세션 중에 SaltStack SecOps Compliance 컨텐츠를 이미 다운로드했으면 이 단계를 건너뛸 수 있습니다.
  3. 패키지 업로드를 클릭하고 파일 탐색기에서 ..tar.gz 파일을 선택합니다.
    참고: 사용자 지정 검사를 보다 쉽게 탐색하려면 파일 이름에 타임스탬프가 포함된 파일을 사용합니다. 파일에 대한 자세한 내용은 폴더 및 파일 항목을 참조하십시오.

    이제 사용자 지정 콘텐츠를 SaltStack SecOps Compliance에서 사용하여 정책을 구축하고, 평가를 실행하고, 시스템에 업데이트를 적용할 수 있습니다. SaltStack 검사에는 built-in-checks-shield-icon 아이콘이 포함되지만 사용자 지정 검사에는 사용자 아이콘(custom-checks-user-icon)이 포함됩니다.

    참고:

    컨텐츠는 API(RaaS)를 사용하여 가져오거나 설치 중에 명령줄을 통해 가져올 수도 있습니다. 자세한 내용은 Sec API 인터페이스 또는 엔터프라이즈 설치 가이드를 참조하십시오.

사용자 지정 검사 삭제

  1. 사용자 인터페이스에서 SecOps > 검사로 이동합니다.
  2. 삭제할 검사 옆에 있는 메뉴(menu-icon-light)를 클릭하고 삭제를 클릭합니다.
    참고: 사용자 지정 컨텐츠만 삭제할 수 있습니다. SaltStack 컨텐츠에는 built-in-checks-shield-icon 아이콘이 포함되지만 사용자 지정 컨텐츠에는 사용자 아이콘( custom-checks-user-icon)이 포함됩니다.
  3. [검사 삭제] 대화상자의 [사용 중] 아래에서 검사가 포함된 정책 및 벤치마크 목록을 검토합니다. 이렇게 하면 검사를 삭제할 경우 끊어질 수 있는 종속성을 예측하는 데 유용합니다.

    사용 중인 종속성 검토를 마치면 다음을 클릭합니다.

  4. 검사 삭제 > 주의 아래에서 삭제를 클릭합니다. 대화상자에서 검사가 삭제된 것을 확인할 수 있습니다.
  5. 완료를 클릭하여 대화상자를 닫습니다.

사용자 지정 벤치마크 삭제

  1. 사용자 인터페이스에서 SecOps > 벤치마크로 이동합니다.
  2. 삭제할 검사 옆에 있는 메뉴(menu-icon-light)를 클릭하고 삭제를 클릭합니다.
    참고:

    사용자 지정 컨텐츠만 삭제할 수 있습니다. SaltStack 컨텐츠에는 built-in-checks-shield-icon 아이콘이 포함되지만 사용자 지정 컨텐츠에는 사용자 아이콘(custom-checks-user-icon)이 포함됩니다.

  3. [벤치마크 삭제] 대화상자의 [사용 중] 아래에서 벤치마크와 연결된 정책 및 검사 목록을 검토합니다. 이렇게 하면 벤치마크를 삭제할 경우 끊어질 수 있는 종속성을 예측하는 데 유용합니다.

    사용 중인 종속성 검토를 마치면 다음을 클릭합니다.

  4. 벤치마크 삭제 > 주의 아래에서 삭제를 클릭합니다. 대화상자에서 벤치마크가 삭제된 것을 확인할 수 있습니다.
  5. 완료를 클릭하여 대화상자를 닫습니다.

폴더 및 파일

SDK를 초기화하면 디렉토리에 다음 폴더와 파일이 포함됩니다.

  • benchmarks - 사용자 지정 벤치마크 메타(.meta) 파일을 포함합니다.
  • salt/locke/custom - 사용자 지정 검사 상태(.sls) 및 메타(.meta) 파일을 포함합니다.
  • sample_tests - Docker를 사용하여 테스트하기 위한 예제 파일을 포함합니다.
  • README.md - SDK에 대한 자세한 정보를 제공합니다.

중요 파일은 아래에서 자세히 설명되어 있습니다.

사용자 지정 벤치마크 파일

벤치마크는 보안 검사의 범주입니다. SaltStack SecOps Compliance 기본 제공 벤치마크는 널리 인정된 전문가에 의해 정의됩니다. 하지만 사용자 지정 벤치마크는 귀사의 표준에 따라 정의할 수 있습니다. 각 벤치마크에는 검사라고 하는 권장 사항 목록이 포함되어 있으며 .meta 디렉토리에 해당 benchmarks 파일이 있습니다. SaltStack SecOps Compliance의 벤치마크에 대한 자세한 내용은 벤치마크를 참조하십시오.

벤치마크 메타 파일을 생성하여 검사에 대한 범주를 생성합니다. 그런 다음 검사 메타 파일 benchmark_id 아래에 벤치마크 이름을 지정하여 벤치마크에 검사를 추가할 수 있습니다. 폴더 및 파일의 내용을 참조하십시오.

메타 파일은 YAML 형식으로 작성되며 다음 옵션이 포함되어 있어서 컨텐츠에 맞게 사용자 지정할 수 있습니다.

name

벤치마크 이름

display_name

SaltStack SecOps Compliance의 벤치마크 목록에 표시되는 벤치마크의 이름

desc

벤치마크 설명

참고:

위의 옵션 외에도 메타 파일에는 version, authority, ids와 같은 다양한 예약 항목이 포함되어 있습니다. 이러한 예약 항목은 관리자의 지시가 없는 한 수정하지 마십시오.

사용자 지정 검사 파일

검사는 SaltStack SecOps Compliance가 규정 준수 여부를 평가하는 보안 표준입니다. 벤치마크와 연결된 권장 사항입니다. 권장 사항은 설명, 근거, 감사 및 업데이트 적용 정보를 제공합니다. 각 검사는 상태(.sls) 및 해당 메타(.meta) 파일이라는 둘 이상의 파일로 정의됩니다.

참고:

검사와 연결된 두 파일은 동일한 디렉토리에 있어야 하며 동일한 이름으로 시작해야 합니다. 예를 들면:

  • my_first_check.meta
  • my_first_check.sls

두 파일은 salt/locke/custom의 하위 디렉토리에 함께 저장합니다.

각 파일 유형은 아래에 자세히 설명되어 있습니다.

검사 메타 파일

검사 메타 파일에는 검사에 대한 설명뿐만 아니라 검사와 관련된 추가 세부 정보(예: 검사의 버전, 적용 가능한 운영 체제 등)가 포함됩니다. 메타 파일은 YAML 형식으로 작성되며 .meta 파일 확장명을 사용합니다.

사용자 지정 검사 메타 파일에는 다음 옵션이 포함됩니다.

version

검사 컨텐츠의 버전입니다. 현재는 1 값만 지원됩니다.

display_name

검사의 이름은 SaltStack Config 사용자 인터페이스의 검사 목록에 표시됩니다.

global_description

검사에 대한 자세한 설명입니다. 검사 및 벤치마크 이름을 통해 제공된 것보다 더 많은 정보를 제공하는 데 사용할 수 있습니다.

osfinger

검사를 실행할 수 있는 운영 체제 목록입니다. 호스트에 이 목록의 값과 일치하는 osfinger 값이 없으면 검사의 평가 결과 notapplicable로 반환됩니다.

refs

이 검사에 만족하는 다른 벤치마크 또는 보안 표준의 다른 검사에 대한 상호 참조 정보입니다.

benchmark_id

검사가 속한 각 벤치마크의 목록입니다.

각 벤치마크 항목은 새 섹션을 생성하며 여기에는 다음 하위 옵션이 포함됩니다.

type

벤치마크의 유형입니다. 특정 기관에서 제공하지 않는 사용자 지정 검사를 정의할 때는 custom을 입력합니다.

desc

SaltStack Config 사용자 인터페이스의 검사 목록에 표시되는 보안 권장 사항의 제목입니다.

control_id

권장 사항 번호입니다(예: 해당 CIS 문서의 번호).

scored

이 필드는 채점되거나 채점되지 않은 CIS 권장 사항에 따라 모델링됩니다. 채점되지 않은 CIS 권장 사항은 보안 점수에 포함되거나 차감되지 않습니다."true"는 채점된 것을 나타내고 false는 채점되지 않은 것을 나타냅니다. 내부 요구에 따라 검사를 채점하거나 채점하지 않을 수 있습니다.

profile

CIS 및 기타 벤치마크는 프로파일로 구분됩니다. 예를 들어 CIS CentOS Linux 7 벤치마크에는 다음과 같은 4가지 프로파일이 있습니다.

profile:
  server:level1
  workstation:level1
  server:level2
  workstation:level3
information

검사에 대한 설명입니다. 검사의 global_description 필드와 유사할 수 있습니다.

rationale

검사를 구현하는 근거에 대한 설명입니다.

remediation

비준수 상태의 시스템에 업데이트를 적용하는 방법에 대한 지침입니다.

검사 상태 파일

검사 상태 파일은 Salt 상태를 적용하여 평가 및 업데이트 적용을 수행합니다. 상태 함수는 특정 상태를 시스템에 적용하는 것을 관리할 수 있는 상태 모듈 내부에 포함된 함수입니다. 상태 함수는 지정된 작업을 수행하기 위해 하나 이상의 실행 모듈을 자주 호출합니다. 상태 파일은 YAML 및 Jinja 형식으로 작성되며 .sls 파일 확장명을 사용합니다.

평가의 결과는 test=True 모드에서 상태 파일을 실행한 결과입니다. 상태를 적용하면 변경이 발생한다고 결과에 표시되면 호스트는 비준수 상태로 간주됩니다. 상태를 적용해도 변경되지 않으면 호스트는 준수 상태로 간주됩니다.

Salt 상태에 대한 자세한 내용은 Salt 설명서: Salt 상태를 사용하는 방법을 참조하십시오.

사용자 지정 컨텐츠 라이브러리 파일

사용자 지정 컨텐츠 라이브러리를 구축하면 디렉토리에 _dist 디렉토리가 포함되며 여기에는 다음과 같은 추가 파일이 포함됩니다.

  • digest.json - 컨텐츠에 대한 해시 및 기타 정보를 포함합니다.
  • secops_custom.tar.gz - 수집할 준비가 된 gzip tar 파일입니다. SaltStack Config 사용자 인터페이스를 통해 업로드하는 데 적합합니다. 컨텐츠 수집에 대한 자세한 내용은 엔터프라이즈 설치 가이드를 참조하십시오.
  • secops_custom.txt - secops_custom.tar.gz의 Base64로 인코딩된 버전입니다. API 호출을 수행할 때 유용합니다.
  • secops_custom_YYYY-MM-DDTHH:MM:SS.SSSSSS...tar.gz - secops_custom.tar.gz의 동일한 사본이며, 알아보기 쉬운 파일 이름(생성 날짜 및 tarball UUID 포함) 때문에 SaltStack Config 사용자 인터페이스를 통한 업로드에 선호됩니다.