규정 준수 담당자는 환경의 지속적인 OS 규정 준수를 보장하기 위해 Cloud Guardrails를 SaltStack Idem 플러그인과 통합합니다.

SaltStack Idem 플러그인을 사용하면 환경이 합의 기반 CIS 모범 사례 및 표준에 부합하는지 확인할 수 있습니다.

SaltStack Idem 플러그인은 애플리케이션 상태 적용과 같은 작업을 간소화하는 상태 저장 프로그래밍 구문을 노출합니다. Cloud Guardrails를 SaltStack Idem 플러그인과 통합하여 SaltStack 환경에서 다음을 생성, 삭제 및 설명할 수 있습니다.

  • 대상
  • 정책

SaltStack Idem 플러그인은 정책 정보를 수집하고 인프라에 대한 지속적인 적용을 지원하며 업데이트 적용을 시행하는 SLS 파일을 실행할 수 있습니다.

표 1. SaltStack Idem 플러그인이 수행하는 작업
OS 규정 준수 작업 SaltStack Idem 플러그인이 수행하는 작업
SaltStack 대상 및 SaltStack 정책에서 정보를 수집합니다.

다음 사항에 대한 정보를 수집합니다.

  • SaltStack 환경의 대상.
  • SaltStack 환경의 정책.
SaltStack SecOps에서 업데이트 적용을 시행하는 SLS 파일을 실행합니다.
  • 다른 OS(운영 체제) 집합에 대해 자동으로 업데이트 적용을 시행합니다.
  • 주문형 정책을 적용합니다.

SaltStack Idem 플러그인은 SaltStack에서 사용 가능한 모든 벤치마크 및 검사와 함께 작동할 수 있습니다.

이 절차에서는 SaltStack Config 및 Salt 미니언을 이미 구성했으며 공용 클라우드 Grain을 포함한 Salt 미니언을 배포하고 등록하기 위한 자동화가 완료된 것으로 가정합니다.

사전 요구 사항

  • SaltStack 아키텍처에 대해 잘 알고 있는지 확인합니다. SaltStack Config 시스템 아키텍처 설명서를 참조하십시오.
  • 온-프레미스 버전의 SaltStack Config를 사용하는 경우에는 미니언이 있는 SaltStack Config 환경이 vRealize Automation 인스턴스와 통합되어 Cloud Guardrails에서 사용할 수 있는지 확인합니다. SaltStack Config 설치 및 구성에서 온-프레미스 SaltStack 설치 설명서를 참조하십시오.
  • 클라우드 버전의 SaltStack Config를 사용하는 경우에는 미니언이 있는 SaltStack Config 환경이 vRealize Automation 인스턴스와 통합되어 Cloud Guardrails에서 사용할 수 있는지 확인합니다. vRealize Automation Cloud에서 SaltStack Config 통합 생성에서 클라우드 SaltStack Config 설치 설명서를 참조하십시오.

프로시저

  1. vRealize Automation Cloud 인스턴스에서 Cloud Guardrails에 액세스합니다.
  2. SaltStack 적용을 위한 보안 템플릿을 생성합니다.
    1. Guardrails 탭에서 +새로 만들기를 클릭합니다.
    2. 처음부터를 클릭합니다.
    3. 템플릿에 대한 설명과 이름을 입력합니다.
    4. 보안이라는 범주를 선택합니다.
      Cloud Guradrails 템플릿을 처음부터 생성할 때는 범주와 프로젝트를 선택해야 합니다.
    5. 프로젝트를 선택하고 계속을 클릭합니다.
  3. SaltStack 보안 적용 코드를 템플릿 편집기에 복사합니다.
    1. 이 항목의 적용 정책 코드를 사용하여 코드를 템플릿 편집기에 복사합니다.
    2. 검증을 클릭합니다.
      템플릿이 유효하다는 메시지가 Cloud Guardrails에 표시됩니다.
    3. 생성을 클릭합니다.
      템플릿을 생성한 후 SaltStack 정책 시행에 대해 원하는 상태를 실행할 수 있습니다.
      Cloud Guardrails에 템플릿이 생성되었다는 메시지가 표시되고 할당된 ID가 표시됩니다.
  4. SaltStack 적용에 대해 원하는 상태를 생성합니다.
    1. 원하는 상태 생성을 클릭합니다.
    2. 원하는 상태에 대한 설명과 이름을 입력합니다.
    3. 생성한 템플릿을 선택합니다. 예를 들어 SaltStack 적용 생성을 선택합니다.
    4. 클라우드 계정 및 클라우드 계정 지역을 선택하고 생성을 선택합니다.
  5. SaltStack 보안 적용 원하는 상태가 요구 사항에 맞는지 확인하고 필요에 따라 업데이트합니다.
    1. 대상 생성을 클릭합니다.
    2. 대상, 대상 이름대상 유형에 대한 입력 매개 변수 값을 확인합니다.
    3. 변경이 필요한 경우 입력 매개 변수 값을 업데이트합니다.
      예를 들어 대상 유형Grain, List, GlobCompound를 지원합니다.
    4. 대상 생성 원하는 상태에 대한 변경 내용을 반영하도록 코드를 업데이트합니다.
    5. 대상에 대한 정책 생성을 클릭합니다.
    6. 대상 이름, 업데이트 적용정책 이름에 대한 입력 매개 변수 값을 확인합니다.
    7. 변경이 필요한 경우 입력 매개 변수 값을 업데이트합니다.
      예를 들어 업데이트 적용 또는 아니요로 설정할 수 있습니다.
    8. 대상에 대한 정책 생성 원하는 상태에 대한 변경 내용을 반영하도록 코드를 업데이트합니다.
  6. 템플릿을 검증하고 변경 내용을 저장하려면 검증을 클릭하고 저장을 클릭합니다.
    입력 매개 변수가 유효하고 템플릿이 성공적으로 저장되었다는 메시지가 Cloud Guardrails에 표시됩니다.
  7. 원하는 상태를 실행하고 결과 적용을 검토합니다.
    1. 원하는 상태 실행을 클릭합니다.
    2. 적용 탭을 클릭하고 원하는 상태가 성공적으로 실행되었는지 확인합니다.
      적용이 실패하면 오류를 수정하고 원하는 상태를 다시 실행합니다.

결과

환경의 지속적인 OS 규정 준수를 보장하기 위해 SaltStack Idem 플러그인을 사용했습니다.

예: 이러한 SLS 템플릿을 사용하여 SaltStack 적용을 생성합니다.

적용 정책의 코드:

META:
  name: Create Saltstack Enforcement
  provider: SALTSTACK
  category: SECURITY
  description: Create target in saltstack, create policy over this target, add CIS benchmark checks on the policy and run remediation

{% set tgt_name = params.get('tgt_name', 'CentOS_Target') %}
{% set policy_name = params.get('policy_name', 'CIS_Benchmark_policy') %}
{% set tgt_type = params.get('tgt_type', 'grain') %}
{% set tgt_value = params.get('tgt_value', 'os:CentOS') %}
{% set remediate = params.get('remediate', true) %}

{{ tgt_name }}-target:
  META:
    name: Create Target
    parameters:
      tgt_name:
        description: Name of the target
        name: Target Name
        uiElement: text
      tgt_type:
        description: Type of the target
        name: Target Type
        uiElement: select
        options:
        - name: Grain
          value: grain
        - name: List
          value: list
        - name: Glob
          value: glob
        - name: Compound
          value: compound
      tgt_value:
        description: Value of target type
        name: Target Value
        uiElement: text
  saltstack.target.present:
  - name: {{ tgt_name }}
  - desc: idem sls
  - tgt_type: {{ tgt_type }}
  - tgt: {{tgt_value}}

{{ policy_name }}-policy:
  META:
   name: Create Policy on target
   parameters:
     policy_name:
       description: Name of the policy
       name: Policy Name
       uiElement: text
     tgt_name:
       description: Name of the target
       name: Target Name
       uiElement: text
     remediate:
       description: Whether remediation has to run on policy
       name: Remediate
       uiElement: select
       options:
         - name: "Yes"
           value: true
         - name: "No"
           value: false
  saltstack.policy.present:
  - require:
    - saltstack.target: {{ tgt_name }}-target
  - name: {{ policy_name }}
  - tgt_name: {{ tgt_name }}
  - remediate: {{ remediate }}
  - benchmark_names:
    - "CIS_CentOS_Linux_7_Benchmark_v2.2.0_server_level1-1"
  - check_names:
    - "Ensure cron daemon is enabled"
    - "Ensure access to the su command is restricted"
    - "Ensure mounting of cramfs filesystems is not enabled"

삭제 정책의 코드:

META:
  name: Delete Saltstack policy 
  provider: SALTSTACK
  category: SECURITY
  description: Delete Saltstack policy 

{% set policy_name = params.get('policy_name', 'CIS_Benchmark_policy') %}

{{ policy_name }}-policy:
  saltstack.policy.absent:
    - name: {{ policy_name }}

대상 삭제 정책의 코드:

META:
  name: Delete Saltstack target
  provider: SALTSTACK
  category: SECURITY
  description: Delete Saltstack target

{% set tgt_name = params.get('tgt_name', 'all_minion_target') %}

{{ tgt_name }}-target:
  saltstack.target.absent:
    - name: {{ tgt_name }}

다음에 수행할 작업

Cloud Guardrails에서 템플릿을 실행하고 원하는 상태를 모니터링하여 SaltStack 환경의 OS 규정 준수를 계속 확인합니다.