관리 규칙 세트 배포

CLI, API 또는 Terraform을 사용하여 영역 또는 인스턴스 수준에서 관리되는 규칙 집합을 배포할 수 있습니다.

사용자 지정 동작(기본 구성 외에 실행되는 변경 사항)을 가진 관리 규칙 집합을 재정의하여 배포할 수 있습니다. 자세한 내용은 관리되는 규칙 집합 재정의하기를 참고하세요.

배치 워크플로우

다음 워크플로우를 사용하여 관리 대상 규칙 세트를 구역 레벨의 단계에 배치하십시오.

  1. 구역 ID를 가져오십시오.
  2. 구역 나열 규칙 세트 조작을 실행하여 사용 가능한 규칙 세트를 가져오십시오.
  3. 배포하려는 관리되는 규칙집의 규칙집 ID를 찾습니다.
  4. 관리 규칙 세트를 배치할 단계를 식별하십시오. 관리되는 규칙 세트가 배포하려는 단계에 속하는지 확인하십시오.
  5. 관리되는 규칙 집합을 실행하는 영역 수준 단계 진입점 규칙 집합에 규칙을 추가합니다.

콘솔에서 관리되는 규칙 집합 배포하기

CIS 콘솔에서 관리되는 규칙 집합을 배포하려면 다음 단계를 따르세요:

  1. CIS 콘솔에서 보안 섹션으로 이동합니다.

  2. WAF 탭을 선택합니다.

  3. 예외 추가를 클릭하여 예외 추가 사이드 패널을 엽니다.

  4. 관리되는 규칙 예외의 이름을 입력합니다.

  5. 표현식을 작성하여 일치 조건을 정의합니다:

    • 요청 필드를 선택하고 연산자를 선택한 다음 값을 입력합니다.
    • 표현식 빌더를 사용하여 표현식을 수동으로 작성할 수도 있습니다
    • And 및 Or 연산자를 사용하여 여러 조건을 결합하여 복잡한 논리를 만들 수 있습니다.
  6. 표현식과 일치하는 요청을 기록할지 여부를 선택합니다.

  7. 일치하는 요청에 대해 규칙 집합이 어떻게 작동할지 결정합니다:

    • 나머지 규칙을 모두 건너뛰거나, 또는

    • 관리 규칙 세트에서 특정 규칙 건너뛰기

      특정 규칙을 건너뛰도록 선택하는 경우 규칙 찾아보기를 클릭하고 규칙 집합을 선택한 다음 건너뛸 특정 규칙을 선택합니다.

  8. ‘배포’를 클릭하여 구성을 활성화하십시오.

    배포 후에는 언제든지 돌아와서 관리되는 규칙 집합 구성을 편집할 수 있습니다.

CLI에서 관리 규칙 세트 배포

CLI에서 관리되는 규칙 세트를 배포할 수 있습니다.

CLI에서 관리되는 규칙 세트 나열

CLI에서 모든 영역 관리 규칙 집합을 나열하려면 다음 단계를 따르세요:

  1. CLI 환경을 설정하십시오.

  2. CLI에서 계정에 로그인하십시오. 비밀번호를 입력하면, 시스템에서 사용하려는 계정과 지역을 입력하라는 메시지가 표시됩니다:

    ibmcloud login --sso
    
  3. 사용자 정의 규칙을 생성하려면 다음 명령어를 실행하십시오:

    ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
    

    명령 옵션

    DNS_DOMAIN_ID
    도메인의 ID입니다.
    -i, --instance
    인스턴스 이름 또는 ID입니다.
    --output
    출력 형식을 지정합니다. JSON만 지원됩니다.

CLI에서 배포된 규칙 세트 업데이트

CLI에서 배포된 규칙 집합을 업데이트하려면 다음 단계를 따르세요:

  1. CLI 환경을 설정하십시오.

  2. CLI에서 계정에 로그인하십시오. 비밀번호를 입력하면, 시스템에서 사용하려는 계정과 지역을 입력하라는 메시지가 표시됩니다:

    ibmcloud login --sso
    
  3. 사용자 정의 규칙을 생성하려면 다음 명령어를 실행하십시오:

    ibmcloud cis managed-waf deployment-add-ruleset DNS_DOMAIN_ID RULESET_ID [--match EXPRESSION] [--enabled true|false] [--override-action ACTION] [--override-status STATUS] [--paranoia-level LEVEL] [--override-rules RULE] [-i, --instance INSTANCE] [--output FORMAT]
    

    명령 옵션

    DNS_DOMAIN_ID
    도메인의 ID입니다.
    --match
    규칙이 실행되기 위해 충족되어야 하는 조건들. 일치시킬 값 목록은 필드, 함수 및 표현식 사용을 참조하세요.
    --enabled
    규칙이 활성화되어 있는지 여부를 나타냅니다. 기본값은 true입니다.
    --overide-action
    모든 재정의 항목에 대한 규칙 세트 동작. 유효한 값은 managed_challenge, block, js_challenge, log, challenge 입니다.
    --paranoia-level
    OWASP 편집증 수준. 유효한 값은 PL1, PL2, PL3, PL4 입니다. CIS OWASP Core Ruleset 에서만 사용할 수 있습니다.
    override-rules
    대체의 규칙 옵션입니다. 예: --override-rules rule=RULE_ID,action=ACTION,enabled=STATUS.
    -i, --instance
    인스턴스 이름 또는 ID.
    --output
    출력 형식을 지정합니다. JSON만 지원됩니다.

명령 예제

이 예는 규칙 집합 efb7b8c949ac4650a09736fc376e9aee 을 배포하는 방법과 규칙 집합 내에 있는 규칙을 재정의하는 방법을 보여 줍니다. 또한 워드프레스 카테고리로 규칙을 재정의하고 있습니다.

ibmcloud cis managed-waf deployment-add-ruleset $domain efb7b8c949ac4650a09736fc376e9aee --match "(http.cookie eq \"example.com/contact?page=1234\")" --action execute --enabled false --override-action block --override-status false --override-rules rule=5de7edfa648c4d6891dc3e7f84534ffa,action=log,enabled=true --override-rules action=managed_challenge,rule=e3a567afc347477d9702d9047e97d760

API를 이용한 관리 규칙 세트 배포

API를 사용하여 관리되는 규칙 집합을 배포할 수 있습니다.

API에 대한 사용자 지정 규칙 시작점 가져오기

모든 사용자 지정 규칙 API 작업에는 사용자 지정 규칙 단계의 시작점 규칙 집합 RULESET_ID 이 필요합니다. 이 진입점 규칙 집합은 이미 존재하거나 존재하지 않는 경우 만들어야 할 수 있습니다.

사용자 지정 규칙 진입점 규칙 집합을 가져오려면 다음 단계를 따르세요:

  1. 올바른 변수로 API 환경을 설정하십시오.
  2. API 명령에 사용할 변수에 다음 값을 저장하십시오.

CRN: 서비스 인스턴스의 전체 URL-인코딩된 클라우드 리소스 이름(CRN)입니다.

ZONE_ID: 도메인 ID.

  1. 모든 변수가 시작되면 진입점 규칙 집합을 가져옵니다:
curl -X GET "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json"

규칙 집합 ID는 성공적인 요청의 응답에 포함됩니다. 앞서 호출한 요청이 404 Not Found 응답을 반환하는 경우, 다음 API를 사용하여 사용자 정의 규칙 단계에 대한 엔트리포인트 규칙 세트를 생성하십시오:

curl -x POST https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
  "name": "Zone-level phase entry point",
  "kind": "zone",
  "description": "WAF managed rule entrypoint ruleset.",
  "phase": "http_request_firewall_managed"
}'

API로 관리되는 규칙 집합 나열하기

API로 관리되는 규칙 집합을 나열하려면 다음 단계를 따르세요:

  1. 올바른 변수로 API 환경을 설정하십시오.
  2. API 명령에 사용할 변수에 다음 값을 저장하십시오.

CRN: 서비스 인스턴스의 전체 URL-인코딩된 클라우드 리소스 이름(CRN)입니다.

ZONE_ID: 도메인 ID.

RULESET_ID: 사용자 지정 규칙 진입점 규칙 집합의 ID입니다.

  1. 모든 변수가 시작되면 영역에서 관리되는 모든 규칙 집합을 나열합니다:
curl -X GET \
  https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets \
  -H 'content-type: application/json' \
  -H 'accept: application/json' \
  -H 'x-auth-user-token: Bearer xxxxxx'

API로 엔트리 포인트 규칙 집합 업데이트하기

API로 엔트리 포인트 규칙 집합을 업데이트하려면 다음 단계를 따르세요:

  1. 올바른 변수로 API 환경을 설정하십시오.
  2. API 명령에 사용할 변수에 다음 값을 저장하십시오.

CRN: 서비스 인스턴스의 전체 URL-인코딩된 클라우드 리소스 이름(CRN)입니다.

ZONE_ID: 도메인 ID.

RULESET_ID: 사용자 지정 규칙 진입점 규칙 집합의 ID입니다.

  1. 모든 변수가 시작되면 진입점 규칙 집합을 업데이트합니다:
curl -X PUT \
  https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/phases/$RULESET_PHASE/entrypoint \
  -H 'content-type: application/json' \
  -H 'accept: application/json' \
  -H 'x-auth-user-token: Bearer xxxxxx' \
  -d '{"rules":[{"action":"execute","action_parameters":{"id":"4814384a9e5d4991b9815dcfc25d2f1f"},"expression":"true","description":"Execute WAF OWASP ruleset"}]}'

여기서:

  • $RULESET_PHASE 는 배포될 규칙 세트 단계입니다. http_request_firewall_managed 를 사용하여 관리되는 WAF 규칙 세트를 배포하십시오.
  • -d는 규칙 집합을 생성하는 데 필요한 속성의 개체입니다.
    • 규칙 은 규칙 세트와 함께 배포할 규칙의 배열입니다. 예를 들어, 다음과 같습니다.
      • action 은 규칙이 수행할 조치입니다. 사용할 수 있는 조치에 대한 설명은 규칙 조치 를 참조하십시오.
      • action_parameters 는 조치가 작동해야 하는 항목을 정의하기 위한 오브젝트입니다.
        • id는 실행할 규칙 세트의 ID입니다. 이 ID는 list zone rulesets 조작에서 검색됩니다.
    • 표현식은 규칙이 실행되는 조건입니다. true 를 사용한다는 것은 이 규칙이 항상 실행된다는 것을 의미합니다.
    • 설명 은 규칙이 달성하는 내용의 요약을 정의합니다.

Terraform으로 관리형 규칙 집합 배포

Terraform으로 관리되는 규칙 집합 나열하기

다음 예제에서는 Terraform을 사용하여 관리되는 규칙 집합을 나열합니다:

data "ibm_cis_rulesets" "tests" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    }

인자 및 속성에 대한 자세한 내용은 다음을 참조하세요 ibm_cis_rulesets 를 참조하세요.

관리되는 규칙 집합의 모든 규칙 나열하기

다음 예제에서는 Terraform을 사용하여 관리되는 규칙 집합의 모든 규칙을 나열합니다:

resource "ibm_cis_ruleset" "config" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    ruleset_id = "943c5da120114ea5831dc1edf8b6f769"
}

인자 및 속성에 대한 자세한 내용은 다음을 참조하세요 ibm_cis_ruleset 를 참조하세요.

재정의 규칙

다음 예제는 테라폼을 사용하여 규칙을 재정의합니다:

resource "ibm_cis_ruleset_entrypoint_version" "test" {
    cis_id    = ibm_cis.instance.id
    domain_id = data.ibm_cis_domain.cis_domain.domain_id
    phase = "http_request_firewall_managed"
    rulesets {
      description = "Entrypoint ruleset for managed ruleset"
      rules {
        action =  "execute"
        description = "Deploy CIS managed ruleset"
        enabled = true
        expression = "true"
        action_parameters  {
          id = "efb7b8c949ac4650a09736fc376e9aee"
          overrides {
            action = "block"
            enabled = true
            override_rules {
              rule_id = "var.overriden_rule.id"
              enabled = true
              action = "block"
            }
            categories {
              category = "wordpress"
              enabled = true
              action = "block"
            }
          }
        }
      }
    }
  }

인자 및 속성에 대한 자세한 내용은 다음을 참조하세요 ibm_cis_ruleset_entrypoint_version 를 참조하세요.