이 문서는 컨텍스트 기반 제한을 사용하여 Cloud Databases 리소스를 보호하는 절차를 설명합니다. 이 문서를 사용하여 컨텍스트 기반 제한을 위한 리소스를 준비하십시오. 현재 구현 단계에서는 제어 Cloud Databases 평면에 스코핑 규칙을 제공하지 않습니다.
컨텍스트 기반 제한사항
컨텍스트 기반 제한을 통해 계정 소유자와 관리자는 액세스 요청의 컨텍스트에 따라 IBM Cloud® 리소스에 대한 액세스 제한을 정의하고 적용할 수 있습니다. 리소스 Cloud Databases 접근은 컨텍스트 기반 제한 및 Identity and Access Management (IAM) 정책으로 제어할 수 있습니다.
이 제한사항은 ID를 기반으로 하는 일반적인 IAM 정책에 대한 작업을 수행하여 추가 보호 계층이 제공됩니다. IAM 정책과는 달리, 컨텍스트 기반 제한사항으로 액세스 권한이 부여되지 않습니다. 컨텍스트 기반 제한사항은 사용자가 구성하는 허용된 컨텍스트에서 액세스 요청이 발생하는지 확인합니다. IAM 액세스 및 컨텍스트 기반 제한사항이 모두 액세스를 허용하므로, 컨텍스트 기반 제한사항은 손상되거나 관리되지 않은 인증 정보의 경우에도 보호를 제공합니다. 자세한 정보는 컨텍스트 기반 제한사항은 무엇입니까?를 참조하십시오.
사용자는 규칙을 생성, 업데이트 또는 삭제하려면 서비스에서 Cloud Databases 관리자 역할을 가져야 합니다. 또한 사용자가 네트워크 영역을 만들거나 업데이트 또는 삭제하려면 컨텍스트 기반 제한 서비스에서 편집자 또는 관리자 역할이 있어야 합니다. 컨텍스트 기반 제한 서비스에서 보기 역할이 있는 사용자는 규칙에 네트워크 영역을 추가할 수 있습니다.
생성된 모든 IBM Cloud Activity Tracker 또는 감사 로그 이벤트는 Cloud Databases 아닌 컨텍스트 기반 제한 서비스에서 발생합니다. { Cloud Databases 컨텍스트 기반 제한으로 보호되는 플랫폼 엔드포인트 호출과의 고객 상호 작용에 대한 감사 이벤트만 지원합니다. 인스턴스에 대한 제어 영역 API에서 컨텍스트 기반 제한 규칙을 사용 설정하는 경우 Cloud Databases 감사 이벤트를 지원하지 않습니다. 자세한 내용은 컨텍스트 기반 제한 모니터링하기를 참조하세요.
컨텍스트 기반 제한으로 Cloud Databases 리소스를 보호하기 시작하려면 컨텍스트 기반 제한을 활용하여 리소스 보호하기 튜토리얼을 참조하세요.
Cloud Databases 컨텍스트 기반 제한과 통합되는 방법
Cloud Databases 서비스, 특정 리소스 및 특정 API에 대한 컨텍스트 기반 제한을 만들 수 있습니다.
Cloud Databases 리소스 보호하기
컨텍스트 기반 제한 규칙을 만들어 특정 지역, 리소스 그룹 및 인스턴스를 보호할 수 있습니다.
- 지역
- 특정 지역의 Cloud Databases 리소스를 보호합니다. 컨텍스트 기반 제한 규칙에 지역을 포함하면 규칙에 연결한 네트워크 영역의 리소스는 해당 지역의 리소스와만 상호 작용할 수 있습니다. CLI를 사용하는 경우
--region옵션을 지정하여 특정 지역의 리소스를 보호할 수 있습니다. UI를 사용하는 경우 리소스 속성에서 지역을 지정할 수 있습니다. - 리소스 그룹
- 특정 리소스 그룹을 보호합니다. 컨텍스트 기반 제한 규칙에 리소스 그룹을 포함하면 규칙에 연결한 네트워크 영역의 리소스는 해당 리소스 그룹의 리소스와만 상호 작용할 수 있습니다. 특정 리소스 그룹으로 규칙의 범위를 지정하는 것은 클러스터 API 유형을 보호하는 규칙에만 사용할 수 있습니다. CLI를 사용하는 경우
--resource-group-id옵션을 지정하여 특정 리소스 그룹에서 리소스를 보호할 수 있습니다. UI를 사용하는 경우 리소스 속성에서 리소스 그룹을 지정할 수 있습니다. - 인스턴스
- 특정 인스턴스를 보호합니다. 컨텍스트 기반 제한 규칙에 인스턴스를 포함하면 규칙에 연결한 네트워크 영역의 리소스는 해당 인스턴스에 있는 리소스와만 상호 작용할 수 있습니다. 특정 인스턴스로 규칙 범위를 지정하는 것은 클러스터 API 유형을 보호하는 규칙에만 사용할 수 있습니다. CLI를 사용하는 경우
--service-instance옵션을 지정하여 특정 리소스 그룹에 있는 인스턴스를 보호할 수 있습니다. UI를 사용하는 경우 리소스 속성에서 서비스 인스턴스를 지정할 수 있습니다.
명령줄 인터페이스(CLI) 사용
컨텍스트 기반 제한 CLI 플러그인을 설치하여 IBM Cloud CLI로 컨텍스트 기반 제한을 생성하고 관리할 수 있습니다.
네트워크 구역 작성
액세스 요청이 작성될 때 네트워크 구역에 IP 주소의 허용 목록이 표시됩니다. 다음 속성으로 지정되는 하나 이상의 네트워크 위치 세트를 정의합니다.
- IP 주소는 개별 주소, 범위 또는 서브넷을 포함합니다.
- VPC.
UI에서 네트워크 영역 만들기
-
IBM Cloud® 콘솔에서 관리 > 컨텍스트 기반 제한으로 이동합니다.
-
네트워크 영역을 선택합니다.
-
작성을 클릭하십시오.
-
네트워크 영역의 이름을 지정하고 설명을 입력합니다.
-
를 허용된 IP 주소. 단일 IP 주소, IP 주소 범위 또는 단일 CIDR을 입력할 수 있습니다.
거부된 IP 주소 필드는 선택 사항이며 허용된 IP 주소 필드에 입력한 IP 범위 내에 포함된 예외만 포함해야 합니다.
-
허용된 VPC를 원하는 수만큼 선택하여 선택합니다.
-
서비스 참조: 컨텍스트 기반 제한을 위한 소스 서비스로 Cloud Databases 선택할 수 있지만 대상 서비스로는 선택할 수 없습니다. 예를 들어 IBM® Key Protect for IBM Cloud® BYOK를 사용하여 Cloud Databases 인스턴스를 프로비저닝할 수 있습니다. 이 예에서 Cloud Databases 소스 포메이션이고 IBM® Key Protect for IBM Cloud® 타깃 포메이션입니다. 그런 다음 Cloud Databases 서비스 참조가 있는 네트워크 영역을 만들고 IBM® Key Protect for IBM Cloud® 대상으로 하는 네트워크 영역과 연결된 규칙을 만듭니다. Cloud Databases 서비스 참조를 추가하려면 서비스 유형에서 IAM 서비스가 자동으로 선택됩니다. 서비스 드롭다운에서 특정 Cloud Databases 서비스를 선택합니다. 만드는 영역이 Cloud Databases 대상으로 하는 규칙과 연결되어 있는 경우에는 서비스 참조가 허용되지 않습니다.
서비스 참조는 서비스에서 Key Protect 서비스로만 작동합니다 Cloud Databases.
CLI에서 네트워크 영역 만들기
CLI에서 네트워크 영역을 만들려면 cbr-zone-create 명령을 사용하여 네트워크 영역에 리소스를 추가합니다. 자세한 내용은 컨텍스트 기반 제한 CLI 참조를 참조 하세요.
다음과 같은 명령을 사용하여 영역을 만듭니다:
ibmcloud cbr zone-create --addresses=1.1.1.1,5.5.5.5 --name=<NAME>
Terraform에서 네트워크 영역 만들기
Terraform에서 영역을 만들려면 IBM Cloud Terraform 공급자 설명서의 지침을 따르세요.
CBR 구역을 생성하는 테라폼 스크립트 예시입니다:
resource "ibm_cbr_zone" "cbr_zone" {
account_id = "12ab34cd56ef78ab90cd12ef34ab56cd"
addresses {
type = "ipAddress"
value = "169.23.56.234"
}
addresses {
type = "ipRange"
value = "169.23.22.0-169.23.22.255"
}
excluded {
type = "ipAddress"
value = "169.23.22.10"
}
excluded {
type = "ipAddress"
value = "169.23.22.11"
}
description = "this is an example of zone"
excluded {
type = "ipAddress"
value = "value"
}
name = "an example of zone"
}
또는, 컨텍스트 기반 제한을 위한 영역을 만들거나 기존 영역의 주소를 업데이트하기 위해 CBR 영역용 Terraform IBM 모듈(TIM) 을 사용할 수도 있습니다.
Terraform IBM 모듈(TIM) 을 사용하여 CBR 구역을 만드는 예제입니다:
module "ibm_cbr" "zone" {
source = "terraform-ibm-modules/cbr/ibm//modules/cbr-zone-module"
version = "X.X.X" # Replace "X.X.X" with a release version to lock into a specific release
name = "zone_for_pg_access"
account_id = "defc0df06b644a9cabc6e44f55b3880s"
zone_description = "Zone created from terraform"
addresses = [{type = "vpc",value = "vpc_crn"}]
}
CLI에서 네트워크 영역 업데이트
다음과 같은 명령을 사용하여 영역을 업데이트합니다:
ibmcloud cbr zone-update <ZONE-ID> --addresses=1.2.3.4 --name=<NAME>
업데이트하려면 영역 이름이 아닌 ZONE-ID 입력해야 합니다. 다음 명령을 사용하여 영역을 나열하고 관련 ZONE-ID 검색합니다:
ibmcloud cbr zones
zone-update 명령은 덮어쓰기입니다. 규칙을 처음부터 만드는 것처럼 필요한 모든 필드를 포함하세요. 필수 입력란을 누락할 경우, 규칙은 누락된 필드를 빈 값으로 덮어씁니다. 또한 해당 필드들이 규칙 변경 여부와 무관하게 필수 항목이기 때문에 규칙이 실패할 수 있습니다.
CLI에서 네트워크 영역 삭제
다음과 같은 명령을 사용하여 영역을 삭제합니다:
ibmcloud cbr zone-delete <ZONE-ID>
규칙 작성
규칙에 따라 자원 속성과 컨텍스트를 기반으로 특정 클라우드 자원에 대한 액세스를 제한합니다. 생성된 규칙은 비공개 엔드포인트의 경우 최대 2,000개의 IP/CIDR 값을, 공용 엔드포인트의 경우 최대 2,000개의 IP/CIDR 값을 허용할 수 있습니다. 이 제한은 Cloud Databases 적용됩니다. 기타 IBM Cloud® 서비스 제한은 다를 수 있습니다.
{{{site.data.keyword.databases-for}} IPv6 주소를 지원하지 않습니다. IPv6 주소가 포함되어 있으면 무시됩니다.
허용되지 않은 엔드포인트에 대한 액세스를 완전히 차단합니다: 더욱 강력한 보안 프레임워크를 제공하기 위해 공용 및 비공개 엔드포인트에 대한 액세스 제어에 중대한 변화를 적용했습니다. 앞으로는 명시적으로 허용 목록에 없는 공용 및 비공개 엔드포인트에 대한 액세스가 완전히 차단됩니다. 이 제한은 엔드포인트에 대한 승인된 액세스만 보장하여 무단 액세스의 위험을 최소화합니다.
UI에서 규칙 작성
-
IBM Cloud® 콘솔에서 관리 > 컨텍스트 기반 제한으로 이동합니다.
-
규칙을 선택합니다.
-
작성을 클릭하십시오.
-
서비스에서 규칙으로 타겟팅할 서비스를 선택합니다.
-
API에서
Data plane선택합니다. 현재 다른 선택을 하면 오류가 발생합니다.데이터 플레인 API 유형에 대해 0개의 작업이 예상됩니다.
Cloud Databases 현재 컨트롤 플레인을 옵션으로 지원하지 않습니다.
-
리소스에서 규칙의 범위를 모든 리소스 또는 특정 리소스로 지정합니다. 자세한 내용은 Cloud Databases 리소스 보호하기를 참조하세요.
-
계속을 클릭합니다.
-
허용되는 엔드포인트 유형을 정의합니다.
- 모든 엔드포인트 유형을 허용하려면 토글을 아니요로 설정하세요.
- 특정 엔드포인트 유형만 허용하려면 토글을 예로 설정한 다음 목록에서 선택합니다.
-
이미 생성한 네트워크 영역을 하나 이상 선택하거나 만들기를 클릭하여 새 네트워크 영역을 만듭니다.
컨텍스트는 리소스에 액세스할 수 있는 위치를 정의하여 네트워크 영역을 규칙에 효과적으로 연결합니다.
-
추가를 클릭하여 요약에 구성을 추가합니다.
-
다음 을 클릭하십시오.
-
규칙의 이름을 지정합니다.
-
규칙 적용 방법을 선택합니다.
보고 전용은 사용할 수 Cloud Databases 없습니다.
CLI에서 규칙 만들기
CLI에서 규칙을 만들려면 적절한 Cloud Databases service_name 필요합니다:
databases-for-postgresqldatabases-for-mongodbdatabases-for-redisdatabases-for-elasticsearchdatabase-for-mysqlmessages-for-rabbitmq
뒤에 나오는 다른 모든 매개변수는 CBR 플러그인 참조 가이드에 설명되어 있습니다.
CBR 규칙을 만들기 위한 명령 예시입니다:
ibmcloud cbr rule-create --enforcement-mode enabled --context-attributes "networkZoneId=<ZONE-ID>" --resource-group-id <RESOURCE_GROUP_ID> --service-name <SERVICE-NAME> --service-instance <SERVICE-INSTANCE> --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane --description <DESCRIPTION>
현재 지원되는 유일한 api-type 옵션은 데이터Cloud Databases 플레인입니다.
보고 전용은 사용할 수 Cloud Databases 없습니다.
CLI에서 규칙 업데이트
CBR 규칙을 업데이트하기 위한 명령 예시입니다:
ibmcloud cbr rule-update <RULE-ID> --enforcement-mode disabled --context-attributes="networkZoneId=<ZONE-ID>" --resource-group-id <RESOURCE_GROUP_ID> --service-name <SERVICE_NAME> --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane --description <DESCRIPTION>
rule-update 명령은 덮어쓰기입니다. 규칙을 처음부터 만드는 것처럼 필요한 모든 필드를 포함하세요. 필수 필드를 생략하면 규칙이 누락된 필드를 비어 있는 것으로 덮어쓰며, 규칙 변경 여부와 관계없이 일부 필드는 필수 필드이므로 규칙이 실패할 수 있습니다.
업데이트하려면 규칙 이름이 아닌 RULE-ID 필요합니다. 다음 명령을 사용하여 규칙을 나열하고 관련 RULE-ID 검색합니다:
ibmcloud cbr rules
CLI에서 규칙 삭제
다음과 같은 명령을 사용하여 규칙을 삭제합니다:
ibmcloud cbr rule-delete <RULE-ID>
옵션 및 매개변수의 전체 목록을 보려면 ibmcloud cbr <command> — help 사용하세요. 예를 들어 ibmcloud cbr rule-create — help 규칙 생성을 위한 매개변수를 출력합니다.
Terraform에서 규칙 만들기
Terraform에서 규칙을 만들려면 IBM Cloud Terraform 공급자 설명서의 지침을 따르세요.
규칙을 만들려면 적절한 Cloud Databases service_name 필요합니다:
databases-for-postgresqldatabases-for-mongodbdatabases-for-redisdatabases-for-elasticsearchdatabase-for-mysqlmessages-for-rabbitmq
다음과 같은 명령을 사용하여 규칙을 만듭니다:
resource "ibm_cbr_rule" "cbr_rule" {
contexts {
attributes {
name = "networkZoneId"
value = "559052eb8f43302824e7ae490c0281eb"
}
attributes {
name = "endpointType"
value = "private"
}
}
description = "this is an example of a rule with one context one zone"
enforcement_mode = "enabled"
operations {
api_types {
api_type_id = "api_type_id"
}
}
resources {
attributes {
name = "accountId"
value = "12ab34cd56ef78ab90cd12ef34ab56cd"
}
attributes {
name = "serviceName"
value = "network-policy-enabled"
}
tags {
name = "tag_name"
value = "tag_value"
}
}
}
규칙 확인
규칙이 적용되었는지 확인하려면 IBM Cloud® 이동하세요 대시보드로 이동하여 리소스 목록에서 관련 인스턴스를 선택합니다. 최근 작업에서 규칙의 상태를 확인할 수 있습니다.
규칙을 만들거나 수정하는 작업은 인스턴스의 작업 대기열로 이동합니다. 작업량에 따라 규칙 적용이 완료되는 데 다소 시간이 걸릴 수 있습니다.