관리되는 규칙 집합을 재정의
관리되는 규칙 집합의 동작을 사용자 지정하려면 배포 시에 재정의하십시오. 규칙 세트를 대체할 때 기본 구성 외에 실행할 변경사항을 지정합니다.
다음과 같은 수준에서 관리되는 규칙 집합을 재정의할 수 있습니다
- 규칙 세트 대체는 실행된 규칙 세트의 모든 규칙에 적용됩니다.
- 태그 대체는 특정 태그가 있는 모든 규칙에 적용됩니다. 예를 들어, wordpress 태그가 있는 모든 규칙이 차단으로 설정되도록 태그 대체를 사용하여 CIS 관리 규칙 세트를 사용자 정의하십시오. 여러 태그에 대체가 있고 규칙에 이러한 태그 중 둘 이상이 있는 경우 태그 대체 순서에 따라 동작이 결정됩니다. 여러 개의 대체된 태그로 태그 지정된 규칙의 경우 마지막 태그의 대체가 적용됩니다.
- 규칙 대체는 해당 규칙 ID로 참조되는 관리 규칙 세트의 특정 규칙에 적용됩니다.
특정 대체는 보다 일반적인 대체보다 우선하고 규칙 대체는 규칙 세트 대체보다 우선하는 태그 대체보다 우선합니다. 태그 대체는 규칙 세트 대체보다 우선합니다.
규칙 세트 대체 및 태그 대체는 관리된 규칙 세트의 기존 및 향후 규칙 모두에 적용됩니다. 기존 규칙만 대체하려면 규칙 대체를 사용해야 합니다.
워크플로 재정의(API)
관리 규칙 세트에 대한 대체를 적용하려면 다음 단계를 수행하십시오.
-
목록 규칙 세트 작업을 사용하여 사용 가능한 규칙 세트를 나열합니다.
-
규칙 집합에 대한 규칙을 나열하려면 규칙 집합 가져오기 작업을 사용하십시오.
-
단계 시작점에서 규칙 세트 업데이트 오퍼레이션을 호출하십시오.
-
관리되는 규칙 세트를 실행하는 규칙의
action_parameters에서 대체를 지정하십시오."action_parameters": { "id": "<RULESET_ID>", "overrides": { // ruleset overrides "property-to-modify": "value", "property-to-modify": "value", // tag overrides "categories": [ { "category": "<TAG_NAME>", "property-to-modify": "value", "property-to-modify": "value" } ], // rule overrides "rules": [ { "id": "<RULE_ID>", "property-to-modify": "value", "property-to-modify": "value" } ] } }
다음 규칙 특성을 대체할 수 있습니다.
- "조치"
- "사용 가능"
일부 관리 규칙 세트에는 추가 대체 요구사항이 있거나 다른 규칙 특성을 대체할 수 있습니다.
대체를 사용하여 인스턴스 레벨에서 관리되는 규칙 세트의 모든 규칙을 사용으로 설정하는 것은 효과적이지 않습니다. 이 변경사항은 인스턴스의 모든 구역에 영향을 줄 수 있습니다. 일부 규칙은 궁극적으로 합법적인 트래픽에 영향을 주므로 기본적으로 사용 안함으로 설정됩니다. 이전 고려사항 없이 구역 간에 이러한 규칙을 사용으로 설정하지 마십시오.
콘솔에서 관리되는 규칙 집합 재정의하기
콘솔에서 관리되는 규칙 집합을 재정의하려면 다음 단계를 따르세요:
-
CIS 콘솔에서 보안 섹션으로 이동합니다.
-
WAF 탭을 선택합니다.
-
재정의하려는 규칙 집합의 이름을 클릭합니다.
-
배포 구성 사이드 패널에서 규칙 찾아보기를 클릭합니다.
-
재정의 CIS 관리되는 규칙 집합 규칙 사이드 패널에서 할 수 있습니다:
- 재정의하려는 규칙에 대한 작업을 선택합니다.
- 상태 토글을 선택하여 규칙을 사용하거나 사용하지 않도록 설정합니다.
-
규칙 집합 규칙을 재구성한 후 계속을 클릭합니다.
-
재정의할 규칙 목록을 확인한 다음 저장을 클릭합니다.
기본값으로 재설정을 클릭하여 원래 설정으로 복원합니다.
CLI에서 관리되는 규칙 세트 나열
CLI에서 모든 영역 규칙 집합을 나열하려면 다음 명령을 실행하세요:
ibmcloud cis managed-waf rulesets DNS_DOMAIN_ID [-i, --instance INSTANCE] [--output FORMAT]
명령 옵션
DNS_DOMAIN_ID- 도메인의 ID입니다.
-i, --instance value- 인스턴스 이름 또는 ID입니다.
--output value- 출력 형식을 지정합니다. JSON만 지원됩니다.
CLI의 영역 규칙 집합 아래에 있는 목록 규칙
CLI에서 영역 규칙집합 아래에 규칙을 나열하려면 다음 명령을 실행하십시오
ibmcloud cis managed-waf ruleset DNS_DOMAIN_ID RULESET_ID [-i, --instance INSTANCE] [--output FORMAT]
명령 옵션
DNS_DOMAIN_ID- 도메인의 ID입니다.
RULESET_ID- 나열할 규칙에 대한 규칙 집합의 ID입니다.
-i, --instance value- 인스턴스 이름 또는 ID입니다.
--output value- 출력 형식을 지정합니다. JSON만 지원됩니다.
CLI에서 관리되는 규칙 집합을 재정의
CLI에서 관리 WAF 규칙 세트를 대체하려면 다음 명령을 실행하십시오.
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 value- 규칙을 실행하기 위해 일치해야 하는 조건입니다. 일치시킬 값 목록은 필드, 함수 및 표현식 사용을 참조하세요.
--enabled value- 규칙이 활성화되어 있는지 여부를 나타냅니다. 기본값은 "true" 입니다.
--override-action value- 오버라이드의 규칙 집합 동작입니다. 올바른 값은 "managed_challenge", "block", "js_challenge", "log", "challenge" 입니다.
--paranoia-level value- OWASP 편집증 수준. 유효한 값은 " PL1 ", " PL2 ", " PL3 ", " PL4 " 이며
CIS OWASP Core Ruleset에서만 사용할 수 있습니다. --override-rules value- 대체의 규칙 옵션입니다. 예를 들어,
--override-rules rule=RULE_ID,action=ACTION,enabled=STATUS입니다. -i, --instance value- 인스턴스 이름 또는 ID입니다.
--output value- 출력 형식을 지정합니다. JSON만 지원됩니다.
API에서 목록 영역 규칙 세트
API에서 모든 구역 규칙 세트를 나열하려면 다음 명령을 실행하십시오
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에서 규칙 세트에 대한 모든 규칙 나열
특정 규칙 세트에 대한 모든 규칙을 나열하려면 다음 명령을 실행하십시오
curl -X GET \
https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'x-auth-user-token: Bearer xxxxxx'
여기서:
$RULESET_ID는 규칙이 나열되는 관리 규칙 세트의 ID입니다.
API에서 진입점 규칙 집합을 재정의하기
API에서 엔트리 포인트 규칙 세트를 재정의로 업데이트하려면 다음 명령을 실행하십시오
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 '{"description":"Deploy managed ruleset, enabling a specific rule with log action","rules":[{"action":"execute","expression":"true","action_parameters":{"id":"<MANAGED_RULESET_ID>","overrides":{"rules":[{"id":"<RULE_ID>","enabled":true,"action":"log"}]}}}]}'
여기서:
$RULESET_PHASE배포되는 규칙 세트 단계입니다.http_request_firewall_managed를 사용하여 관리되는 WAF 규칙 집합을 재정의하십시오.-d규칙 집합을 만드는 데 필요한 속성의 대상입니다.description규칙 세트가 무엇을 성취하는지에 대한 자신의 요약을 정의합니다.rules규칙 집합과 함께 배포할 규칙의 배열입니다.action는 규칙이 수행할 조치입니다. 사용 가능한 작업에 대한 설명은 WAF 규칙 세트 작업을 참조하십시오.action_parameters는 조치가 작동하는 대상을 정의하기 위한 오브젝트입니다.id는 실행할 규칙 세트의 ID입니다. 이 ID는 구역 규칙 세트 나열 오퍼레이션에서 검색됩니다.overrides선택된 규칙 집합에 설정된 재정의의 대상입니다.rules는 선택한 특성으로 대체되는 규칙 목록입니다.id는 대체할 규칙의 ID입니다. 이 ID는 목록 구역 규칙 세트 규칙 오퍼레이션에서 검색됩니다.enabled는 규칙이 사용으로 설정된 경우에도 겹쳐씁니다.action는 규칙이 수행하는 대체 조치를 지정합니다.
expression는 규칙이 실행되는 조건입니다. "true" 를 사용하는 것은 이 규칙이 항상 실행됨을 의미합니다.description에서는 규칙이 달성하는 사항에 대한 사용자 고유의 요약을 정의합니다.
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으로 관리되는 규칙 집합의 모든 규칙 나열하기
다음 예제에는 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 를 참조하세요.
테라폼으로 규칙 재정의하기
이 예에서는 다양한 재정의가 포함된 CIS 관리 규칙 집합을 배포하는 방법을 보여 줍니다. 첫째, 모든 규칙에 대해 트래픽을 활성화 및 차단합니다. 그런 다음 특정 규칙에 대한 트래픽을 활성화하고 차단합니다. 마지막으로 wordpress 카테고리의 모든 규칙에 대한 트래픽을 활성화 및 차단합니다. 기본적으로 이 예는 배포된 규칙을 재정의하는 다양한 방법(전역, 특정, 카테고리별)을 보여줍니다.
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"
}
}
}
}
}
}
다음 예제는 WAF 진입점을 만들고 Terraform으로 규칙을 재정의하는 방법을 보여줍니다:
resource "ibm_cis_ruleset_entrypoint_version" "waf_config" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
rulesets {
description = "Entry Point rulesets"
}
lifecycle {
ignore_changes = [
rulesets
]
}
}
data "ibm_cis_ruleset_entrypoint_versions" "test"{
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
phase = "http_request_firewall_managed"
depends_on = [
ibm_cis_ruleset_entrypoint_version.waf_config
]
}
resource ibm_cis_ruleset_rule "rule1" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "OWASP Core RuleSet"
enabled = true
expression = "true"
action_parameters {
id = "4814384a9e5d4991b9815dcfc25d2f1f"
overrides {
categories {
category = "paranoia-level-2"
enabled = false
}
categories {
category = "paranoia-level-3"
enabled = false
}
categories {
category = "paranoia-level-4"
enabled = false
}
override_rules {
rule_id = "6179ae15870a4bb7b2d480d4843b323c"
action = "block"
score_threshold = 60
enabled = true
}
override_rules {
rule_id = "8ac8bc2a661e475d940980f9317f28e1"
enabled = true
}
}
}
}
}
resource ibm_cis_ruleset_rule "rule2" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "CIS exposed credential ruleset"
enabled = true
expression = "true"
action_parameters {
id = "c2e184081120413c86c3ab7e14069605"
overrides {
override_rules {
rule_id = "53f38cd8974a4cd3bc9a8a64fc731fb0"
enabled = true
action = "log"
}
}
}
}
}
resource ibm_cis_ruleset_rule "rule3" {
cis_id = ibm_cis.instance.id
domain_id = data.ibm_cis_domain.cis_domain.domain_id
ruleset_id = data.ibm_cis_ruleset_entrypoint_versions.test.rulesets[0].ruleset_id
rule {
action = "execute"
description = "CIS Managed ruleset"
enabled = true
expression = "true"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
override_rules {
rule_id = "5de7edfa648c4d6891dc3e7f84534ffa"
enabled = true
action = "block"
}
}
}
}
}
인자 및 속성에 대한 자세한 내용은 다음을 참조하세요 ibm_cis_ruleset_entrypoint_version 를 참조하세요.