컨텍스트 기반 제한사항으로 VPC (Virtual Private Cloud) 인프라 서비스 보호
컨텍스트 기반 제한 기능을 통해 계정 소유자와 관리자는 액세스 요청의 컨텍스트에 따라 IBM Cloud® 리소스에 대한 액세스 제한을 정의하고 적용할 수 있습니다. VPC 인프라 서비스에 대한 접근은 컨텍스트 기반 제한 및 IAM(Identity and Access Management) 정책을 통해 제어할 수 있습니다.
이 제한사항은 ID를 기반으로 하는 일반적인 IAM 정책에 대한 작업을 수행하여 추가 보호 계층이 제공됩니다. IAM 정책과는 달리, 컨텍스트 기반 제한사항으로 액세스 권한이 부여되지 않습니다. 컨텍스트 기반 제한은 액세스 요청이 사용자가 구성한 허용된 컨텍스트에서 비롯된 것인지 확인합니다. IAM 액세스 및 컨텍스트 기반 제한사항이 모두 액세스를 허용하므로, 컨텍스트 기반 제한사항은 손상되거나 관리되지 않은 인증 정보의 경우에도 보호를 제공합니다. 자세한 정보는 컨텍스트 기반 제한사항은 무엇입니까?를 참조하십시오.
사용자는 VPC 인프라 서비스에 대한 규칙을 생성, 업데이트 또는 삭제하려면 VPC 인프라 서비스에 대한 관리자 역할을 보유해야 합니다. 사용자는 네트워크 영역을 생성, 업데이트 또는 삭제하려면 컨텍스트 기반 제한 서비스에서 편집자 또는 관리자 역할을 가져야 합니다. 컨텍스트 기반 제한 서비스에서 뷰어 역할의 사용자는 규칙에 네트워크 영역만 추가할 수 있습니다.
컨텍스트 기반 제한 서비스는 컨텍스트 기반 정책이 적용될 때마다 감사 로그를 생성합니다. 자세한 정보는 컨텍스트 기반 제한사항 모니터링 을 참조하십시오.
컨텍스트 기반 제한을 사용하여 VPC 인프라 서비스를 보호하는 방법을 시작하려면 '리소스 보안을 위한 컨텍스트 기반 제한 활용' 튜토리얼을 참조하십시오.
VPC 인프라 서비스가 컨텍스트 기반 제한사항과 통합되는 방법
VPC 인프라 서비스는 여러 하위 서비스로 구성된 복합 서비스입니다. IBM Cloud VPC 또는 그 하위 서비스(예: 서브넷, 가상 서버 인스턴스, Block Storage 볼륨 )에 대해 컨텍스트 기반 제한을 생성할 수 있습니다.
각 서비스에 필요한 속성을 가진 규칙을 생성하는 방법에 대한 자세한 내용은 규칙 생성 섹 션을 참조하십시오.
네트워크 구역 작성
액세스 요청이 작성될 때 네트워크 구역에 IP 주소의 허용 목록이 표시됩니다. 다음 속성으로 지정되는 하나 이상의 네트워크 위치 세트를 정의합니다.
- 개별 주소, 주소 범위 또는 서브넷을 포함하는 IP 주소
- VPC
- 다른 IBM Cloud® 서비스에서 액세스할 수 있도록 하는 서비스 참조
서비스 참조
네트워크 영역의 일부로 정의된 *서비스 참조는 지정된 서비스가 컨텍스트 기반 제한 정책의 대상이 되는 제한된 리소스 또는 API와 통신할 수 있도록 허용합니다. 다음 표에는 VPC 인프라 서비스 컨텍스트에서 컨텍스트 기반 제한을 사용할 때 포함해야 하는 서비스 참조가 포함되어 있습니다. 네트워크 영역에 추가할 서비스 참조를 검토할 때 계정의 서비스 간 IAM 권한 설정도 확인할 수 있습니다. 서비스 간 인증은 계정에서 관리 -> 액세스(IAM) 로 이동한 후 인증 탭을 선택하여 확인할 수 있습니다.
| 컨텍스트 기반 제한사항이 있는 서비스 | 영향받은 서비스 | 네트워크 영역에서 요구되는 서비스 참조 |
|---|---|---|
| Cloud Object Storage | VPC 인프라 서비스 (is) |
|
| Key Protect | Cloud Block Storage (server-protect),File Storage for VPC ( is.share) |
|
| Hyper Protect Crypto Service | Cloud Block Storage (server-protect),File Storage for VPC ( is.share) |
|
| 가상 서버 인스턴스 | VPC 인프라 서비스 (is) |
|
| 다양한 VPC 인프라 서비스- Block Storage 볼륨, 보안 그룹, 서브넷 | IBM Kubernetes Service (containers-kubernetes) |
|
| Secrets Manager | VPC 인프라 서비스 (is) |
API를 사용하여 네트워크 영역 생성하기
create-zone 명령을 사용하여 네트워크 구역을 작성할 수 있습니다. 자세한 정보는 API 문서를 참조하십시오.
VPC 인프라 서비스의 속성은 serviceRef 입니다 is. Cloud Block Storage 는 server-protect, 그리고 File Storage for VPC 는 is.share.
{
"name": "Example zone 1",
"description": "",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "is"
}
}
]
}
{
"name": "Example zone 1",
"description": "",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "server-protect"
}
}
]
}
CLI를 사용하여 네트워크 영역 생성하기
-
CLI에서 네트워크 영역을 생성하려면 CBR CLI 플러그인을 설치하십시오.
-
네트워크
cbr-zone-create명령어를 사용하여 네트워크 위치, VPC 및 서비스 참조를 네트워크 영역에 추가합니다. 자세한 내용은 CBR CLI 참조 문서를 참조하십시오.사용 가능한 서비스 참조 대상 목록을 찾으려면 다음
ibmcloud cbr service-ref-targets명령을 실행하십시오. VPC 인프라 서비스에 대한service_name요금은 입니다is. Cloud Block Storage 는server-protect, 그리고 File Storage for VPC 는is.share.다음 예제 명령어는 네트워크 영역에 VPC Infrastructure Services ( IBM Cloud® 콘솔에서 VPC 인프라 서비스로
is지칭됨)를 추가합니다.ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=is다음 예제 명령은
server-protect서비스라고 불리는* Cloud Block Storage* ~에 IBM Cloud® 콘솔에서 네트워크 영역으로.ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=server-protect
콘솔에서 네트워크 구역 작성
- 허용 목록에 추가할 자원을 판별하십시오.
- 서비스 참조 섹션을 확인하여 네트워크 영역에 서비스 참조를 추가해야 하는지 여부를 확인하십시오.
- 콘솔에서 컨텍스트 기반 제한사항을 작성 하려면 다음 단계를 수행하십시오.
규칙 작성
VPC 인프라 서비스 내에서 각 하위 서비스는 컨텍스트 기반 규칙에 특정 속성이 필요합니다.
API, Terraform 또는 IBM Cloud CLI를 사용하여 IBM Cloud 컨텍스트 기반 제한을 생성, 업데이트 또는 삭제할 때 리소스 속성을 사용하여 대상 VPC 인프라 리소스를 지정할 수 있습니다.
개별 VPC 리소스에 해당하는 리소스 속성은 VPC 리소스 속성 을 참조하십시오.
객체의 ID를 입력하여 리소스를 선택할 수 있습니다. 또는 * 와일드카드를 사용하여 적용 가능한 모든 자원을 선택할 수 있습니다. 예를 들어, vpcId:* 속성은 계정의 모든 VPC에 적용할 컨텍스트 기반 제한사항을 설정합니다. 정책이 명령에 지정되는 리소스 그룹을 지정할 수도 있습니다.
API를 사용하여 규칙 작성
다음 예제 요청을 검토하여 규칙을 작성하십시오. v1/rules 에 대한 자세한 정보는 API의 경우 API 문서 를 참조하십시오.
규칙을 작성한 후 해당 규칙을 업데이트하려면 최대 10분이 소요될 수 있습니다.
다음 예제 페이로드는 가상 서버 인스턴스를 보호하는 규칙을 생성하고 다음과 같이 허용합니다 지정된 네트워크 영역에서만 프라이빗 엔드포인트를 통한 액세스를 허용합니다.
{
"contexts": [
{
"attributes": [
{
"name": "endpointType",
"value": "private"
},
{
"name": "networkZoneId",
"value": "45ec64065b7c2bf84b3edec803335111"
}
]
}
],
"resources": [
{
"attributes": [
{
"name": "resourceGroupId",
"value": "1171749e3a8545069d04e6fca1ded18f"
},
{
"name": "serviceName",
"value": "is"
},
{
"name": "instanceId",
"value": "*"
}
]
}
]
}
CLI를 사용하여 규칙 생성하기
- CLI에서 규칙을 작성하려면 CBR CLI 플러그인을 설치 하십시오.
ibmcloud cbr rule-create명령 를 사용하여 CBR 규칙을 작성하십시오. 자세한 정보는 CBR CLI 참조 를 참조하십시오.
다음 예시는 시행 규칙입니다. --enforcement-mode report 를 추가하여 보고서 전용으로 작성할 수 있습니다.
다음 예제 CLI 명령은 현재 계정의 모든 가상 서버 인스턴스에 대한 컨텍스트 기반 제한 규칙을 작성합니다.
ibmcloud cbr rule-create --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"
다음 예제 CLI 명령은 현재 계정의 특정 블록 스토리지 볼륨에 대한 컨텍스트 기반 제한 규칙을 작성합니다.
ibmcloud cbr rule-create --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for volume" --service-name is --resource-attributes "volumeId=UUID_OF_THE_VOLUME"
다음 예제 CLI 명령은 현재 계정의 모든 가상 서버 인스턴스에 대한 컨텍스트 기반 제한 규칙을 작성하고 개인용 엔드포인트에 대한 액세스를 제한합니다.
ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"
다음 예제 CLI 명령은 리소스 그룹의 모든 가상 서버 인스턴스에 대한 컨텍스트 기반 제한 규칙을 작성하고 사설 엔드포인트에 대한 액세스를 제한합니다.
ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*" --resource-group-id 1171749e3a8545069d04e6fca1ded18f
콘솔에서 규칙 작성
-
IBM Cloud® 콘솔에서 관리 > 컨텍스트 기반 제한사항 으로 이동하십시오.
-
‘규칙’을 선택한 다음 ‘만들기’를 클릭합니다.
-
VPC 인프라 서비스 를 선택하고 다음을 클릭하십시오.
-
규칙의 적용 범위를 ‘모든 리소스’ 또는 ‘특정 리소스’로 설정합니다. 자세한 내용은 VPC 인프라 서비스 리소스 보호하기를 참조하세요. 계속을 클릭합니다.
-
허용되는 엔드포인트 유형을 정의하십시오.
- 모든 엔드포인트 유형을 허용하려면 전환을 아니오 로 설정하십시오.
- 특정 엔드포인트 유형만 허용하려면 토글을 예 로 설정한 후 목록에서 선택하십시오.
-
기존 네트워크 영역을 하나 또는 여러 개 선택하거나, '생성'을 클릭하여 네트워크 영역을 생성하십시오.
컨텍스트는 자원에 액세스할 수 있는 위치를 정의하여 네트워크 구역을 규칙에 효과적으로 링크합니다.
-
‘추가’를 클릭하여 구성 내용을 요약에 추가하세요. 다음을 클릭하십시오.
-
규칙의 이름을 지정하고 이를 적용할 방법을 선택하십시오. 그런 다음 작성을 클릭하십시오.
VPC 인프라 서비스에서 컨텍스트 기반 제한사항 모니터링
컨텍스트 기반 제한 서비스는 컨텍스트 기반 정책이 적용될 때마다 감사 로그를 생성합니다 자세한 정보는 다음을 참조하십시오. 컨텍스트 기반 제한사항 모니터링.
컨텍스트 기반 제한사항으로 인한 실패 문제점 해결
403 권한 없음 오류 메시지
부적절한 접근 권한으로 인해 요청이 거부되거나 요청이 컨텍스트 기반 제한 규칙에 정의된 네트워크 영역 외부에서 발생한 경우, 오류 응답은 다음과 유사합니다.
CLI 응답에서 403 무권한 오류 발생
Error code: not_authorized and
Error message: the provided token is not authorized
Trace ID: b266a31c-b359-4ecb-8b81-a27c1b2cdb7b
IBM Cloud 콘솔에서 403 권한 없음 오류 발생
reference_id b266a31c-b359-4ecb-8b81-a27c1b2cdb7b
code not_authorized
message the provided token is not authorized
API 응답에서 403 무단 접근 오류 발생
"code":"not_authorized",
"message":"the provided token is not authorized to list floating-ips in this account"
"trace":"b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"
컨텍스트 기반 제한 이벤트 찾기
Trace ID 또는 Reference ID 값을 사용하여 IBM Cloud Logs 인스턴스에서 문맥 기반 제한 서비스에서 생성된 이벤트를 검색할 수 있습니다. requestData.environment 섹션에는 통화의 소스 IP 주소와 권한 부여가 거부된 이유를 확인하는 데 사용할 수 있는 기타 정보가 표시됩니다. requestData.action 및 requestData.resource 필드를 사용하여 액세스가 거부된 기본 자원을 판별할 수 있습니다.
다음 예시는 컨텍스트 기반 제한 이벤트입니다. 가독성을 높이기 위해 일부 필드가 제거되었습니다.
{
"level": "critical",
"action": "context-based-restrictions.policy.eval",
"message": "Context based restriction rendered a deny",
"severity": "critical",
"correlationId": "TXID-b266a31c-b359-4ecb-8b81-a27c1b2cdb7b-df2f912c-80a1-422c-8b17-6092651fea00",
"requestData": {
"action": "is.vpc.vpc.create",
"reqOrder": 0,
"environment": {
"attributes": {
"ipAddress": "192.168.0.1",
"networkType": "public"
}
},
"resource": {
"attributes": {
"accountId": "67db3d7ff3f34220b40e2d81480754c9",
"resource": "NEWRESOURCE",
"vpcId": "NEWRESOURCE",
"resourceGroupId": "d272ce832535498e9142b557ff8638ed",
"region": "au-syd",
"serviceName": "is",
"resourceType": "vpc"
}
},
"subject": {
"attributes": {
"scope": "ibm openid",
"token.account.bss": "67db3d7ff3f34220b40e2d81480754c9",
"id": "IBMid-550009FB7N"
}
}
},
"responseData": {
"decision": "Deny",
"isEnforced": true
}
}
그런 다음 동일한 추적 ID 또는 참조 ID를 사용하여 IBM Cloud Logs 인스턴스에서 특정 VPC 인프라 서비스 이벤트를 살펴볼 수 있습니다.
{
"action": "is.vpc.vpc.create",
"outcome": "failure",
"message": "Virtual Private Cloud: create vpc -failure",
"severity": "critical",
"dataEvent": false,
"logSourceCRN": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
"saveServiceCopy": true,
"initiator": {
"id": "IBMid-ABCDEFGH",
"typeURI": "service/security/account/user",
"name": "test@ibm.com",
"authnName": "test",
"authnId": "IBMid-ABCDEFGH",
"host": {
"address": "192.168.0.1",
"addressType": "IPv4"
},
"credential": {
"type": "token"
}
},
"target": {
"id": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
"typeURI": "is.vpc/vpc",
"name": "",
"resourceGroupId": "crn:v1:bluemix:public:resource-controller::a/67db3d7ff3f34220b40e2d81480754c9::resource-group:d272ce832535498e9142b557ff8638ed"
},
"reason": {
"reasonCode": 403,
"reasonType": "Forbidden",
"reasonForFailure": "Your access token is invalid or does not have the necessary permissions to perform this task"
},
"requestData": {
"generation": "2",
"requestId": "b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"
},
"responseData": {
"responseURI": "/v1/vpcs/"
}
}
자원 ID를 사용하여 이벤트를 검색할 수도 있습니다. 자원 ID는 UUID이며 CRN의 마지막 ID입니다. 다음 예시를 참조하십시오
crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:<resourceID>
프로비저닝 자원에 대한 요청에 자원 ID가 포함되어 있지 않습니다.
컨텍스트 기반 제한 이벤트를 찾지 못한 IBM Cloud Logs 경우, IAM 액세스 정책으로 인해 액세스가 거부되었을 수 있습니다. 자세한 내용은 VPC IAM 시작 가이 드를 참조하십시오.
컨텍스트 기반 제한사항으로 클라이언트 대 사이트 VPN 데이터 플레인에 미치는 영향
클라이언트-사이트 VPN의 클라이언트 인증 구성에서 사용자 ID 및 암호 기능을 활성화하고 VPC 리소스에 컨텍스트 기반 규칙을 생성하면, VPN에 대한 클라이언트 연결이 컨텍스트 기반 제한 사항의 영향을 받습니다. VPN 클라이언트 원격 IP가
네트워크 구역에 없는 경우 VPN 서버에 대한 연결은 Auth Failed 오류를 리턴합니다.
VPN 클라이언트가 VPN 서버에 연결된 후 VPE 엔드포인트 또는 클라우드 서비스 엔드포인트 (CSE) 에 대한 요청은 컨텍스트 기반 제한사항으로 제어됩니다. 또한 요청의 소스 IP는 VPC 클라우드 서비스 엔드포인트 소스 주소 입니다. VPC CSE 소스 주소가 CBR 네트워크 구역에 있는지 확인하십시오. 그렇지 않으면 요청이 거부됩니다.
제한사항
- 컨텍스트 기반 제한은 VPC 인프라 서비스 API 또는 IBM CLI
is플러그인과 연관된 작업만 보호합니다. SDK및 Terraform 옵션도 지원됩니다. 다음 플랫폼 API와 관련된 작업은 컨텍스트 기반 제한 사항의 보호를 받지 않습니다:- 자원 인스턴스 목록 API
- 자원 인스턴스 자원 삭제 API
- 글로벌 검색 API
- 글로벌 태그 지정 첨부 및 분리 API
- 규칙을 생성하면 해당 규칙이 적용되기까지 최대 10분이 소요될 수 있습니다.
- 해결 중인 제한 사항으로 인해, VPC 서비스용 로드 밸런 서를 사용할 때는 Secrets Manager API에 대한 컨텍스트 기반 제한이 적용되어서는 안 됩니다. 로드 밸런서와 연결된 리스너에 인증서를 연결하는 데 실패하기 때문입니다.