Code Engine 및 보안
IBM Cloud® Code Engine 아키텍처는 보안 우선 방식으로 빌드되었습니다. Code Engine 컴포넌트는 IBM에서 관리하고 소유합니다. 고객 및 해당 워크로드는 Kubernetes 네임스페이스를
기반으로 하는 프로젝트를 사용하여 서로 격리됩니다. 역할 기반 액세스 제어는 권한 부여된 사용자만 프로젝트 리소스에 대한 특정 오퍼레이션을 수행할 수 있도록 리소스 레벨에서 수행됩니다. 사용자 액세스는 Cloud Identity and Access Management(IAM)에서 제어합니다. 배포된 앱은 HTTPS 을 통해 노출되며, Code Engine 은 기본이 되는 TLS 인증서를 자동으로 생성하고
관리해 줍니다. Code Engine 은 애플리케이션에 대한 DDoS 보호 기능을 즉시 제공합니다. Code Engine 의 DDoS 보호 기능은 Cloud Internet Services (CIS) 을 통해 제공되며, 추가 비용이 발생하지 않습니다.
Code Engine 작업은 정의에 의해 외부에서 액세스될 수 없습니다. 작업은 계속해서 외부 요청을 수행할 수 있으며 Code Engine 애플리케이션을 내부적으로 호출할 수 있습니다. 애플리케이션을 내부적으로 호출하는 작업의 예시는 ‘ Code Engine ’ 샘플(GitHub)저장소를 참조하십시오.
다음 보안 기능을 사용하여 보안을 강화할 수 있습니다.
| 보안 기능 | 설명 |
|---|---|
| IAM에 대한 액세스 권한 부여 | Cloud Identity and Access Management(IAM)를 사용하여 다른 사용자에게 Code Engine에 대한 액세스 권한을 부여하십시오. IBM Cloud IAM은 IBM Cloud 플랫폼, Code Engine 및 계정의 모든 리소스에 대한 보안 인증을 제공합니다. 적절한 사용자 역할 및 권한을 설정하는 것은 리소스에 액세스할 수 있는 사용자를 제한하는 데 중요합니다. 사용자 액세스 관리를 참조하십시오. |
| 외부 엔드포인트 사용 안함 | --visibility=private 또는 visibility=project 옵션을 사용하여 외부 트래픽에 노출되지 않는 사용 안함으로 설정된 외부 엔드포인트로 애플리케이션을 배치하십시오. Code Engine 애플리케이션의 가시성 옵션을
참조하십시오. |
| 개인용 이미지 레지스트리에 이미지 저장 | IBM Cloud Container Registry에서 제공하는 것과 같이, Code Engine에 배치될 수 있는 레지스트리와 이미지에 대한 액세스를 제어하도록 개인용 이미지 레지스트리를 설정하십시오. IBM Cloud Container Registry Vulnerability Advisor를 사용하여 자동으로 이미지를 스캔하십시오. 고유한 사용자 정의 개인용 레지스트리에 대한 액세스를 추가할 수도 있습니다. 컨테이너 레지스트리에 액세스를 참조하십시오. |
| 개인용 저장소에서 코드 빌드 | 개인용 저장소에 소스 코드를 저장한 후 IBM Cloud Container Registry(으)로 빌드하십시오. 개인용 코드 저장소 액세스를 참조하십시오. |
| 시크릿을 사용하여 민감한 정보 저장 | 비밀번호 및 SSH 키와 같은 정보를 시크릿에 저장할 수 있습니다. 자세한 정보는 시크릿에 대한 작업 을 참조하십시오. |
| 인증 및 권한 부여 기능 추가 | 공용 API 또는 웹 사이트의 Code Engine 에서 애플리케이션 또는 기능을 노출하는 경우 특정 사용자 또는 위치 (IP 주소 범위) 에 대한 액세스를 제한할 수 있습니다. Code Engine 가 Code Engine 프로젝트 및 해당 엔티티를 관리하는 데 사용할 수 있는 API에 대한 액세스를 제한하는 기능을 제공하는 반면, 엔드포인트에 도달할 때 실행되는 코드를 보호하기 위해 적절한 인증 및 권한 부여 기능을 추가하는 것은 코드 소스 소유자의 책임입니다. 예를 들어, IBM Cloud App ID 을 사용하여 코드에 대한 인증 및 권한 부여 기능을 추가할 수 있습니다. |
| TLS 인증서를 정기적으로 갱신하십시오 | 애플리케이션이나 함수를 공개하기 위해 사용자 지정 도메인 매핑을 사용하는 경우, TLS 인증서에 만료일(예: 90일)이 설정되어 있는지 반드시 확인해야 합니다. 업데이트된 인증서 (자체 만기 날짜가 있는) 를 사용하여 인증서를 주기적으로 순환해야 합니다. 자동화를 사용하여 인증서를 순환하는 것이 이상적입니다. 예를 들어, 크론(cron) 구독에 의해 트리거되는 ‘ Code Engine ’ 작업을 사용하여 인증서를 순환 갱신할 수 있습니다. IBM Cloud Secrets Manager 에 비밀 정보를 저장하는 경우, Code Engine 프로젝트가 인증서 갱신을 인식할 수 있도록 IBM Cloud Event Notifications 를 사용하는 것을 고려해 보세요. 이벤트 알림을 사용하는 샘플 앱은 GitHub 에 있는 ‘ Code Engine ’ 샘플 저장소에서 확인하실 수 있습니다. |
지원되는 TLS 버전 및 암호 모음
Code Engine API 및 애플리케이션 엔드포인트는 전송 계층 보안( TLS ), 1.2 (또는 그 이상) 및 다음 암호 모음을 지원합니다.
TLS 암호 모음
ECDHE-ECDSA-AES128-GCM-SHA256ECDHE-ECDSA-AES256-GCM-SHA384ECDHE-RSA-AES128-GCM-SHA256ECDHE-RSA-AES256-GCM-SHA384ECDHE-ECDSA-CHACHA20-POLY1305ECDHE-RSA-CHACHA20-POLY1305
DDoS 보호
Code Engine 애플리케이션에 대한 DDoS 보호 기능을 즉시 제공합니다. Code Engine 의 DDoS 보호 기능은 Cloud Internet Services (CIS) 을 통해 제공되며, 추가 비용은 발생하지 않습니다.
DDoS 이 보호 기능은 OSI 계층 3 및 계층 4( TCP/IP ) 프로토콜 공격을 차단하지만, 계층 7( HTTP ) 공격은 차단하지 않습니다.
계층 7공격을 해결하기 위해 사용자 정의 도메인을 사용하는 보안 라우트를 통해 트래픽이 실행되고 Code Engine 제공 도메인을 통해 공용 인터넷에서 더 이상 사용할 수 없도록 다음 단계를 수행할 수 있습니다.
- 사용자 정의 도메인을 확보하십시오.
- Code Engine에서 앱에 대한 사용자 정의 도메인 맵핑을 작성 하십시오.
- Cloud Internet Services (CIS) 의 인스턴스를 설정하여 사용자 정의 도메인을 관리하십시오.
- CIS 인스턴스에 사용자 정의 도메인을 추가하십시오.
- CIS에서 글로벌 로드 밸런서를 구성 하십시오.
- CIS 에서 로드 밸런서에 대한 ‘ HTTP ’ 프록시 모드를 활성화하십시오. 이렇게 하면 레이어 7에서 ‘ DDoS ’ 보호 기능과 기타 ‘ CIS ’ 보안 기능이 활성화됩니다.
- Code Engine에서 애플리케이션의 공용 시스템 제공 도메인 맵핑을 끄십시오. 애플리케이션으로 이동하여 앱의 도메인 맵핑 탭에서 외부 시스템 도메인 맵핑 없음을 선택하십시오.
- 작성 을 클릭하여 애플리케이션 개정을 저장하십시오.
CIS의 DDoS 에 대한 자세한 정보는 CIS에서 분산 서비스 거부(DoS)공격 처리 를 참조하십시오. 계층 7공격을 처리하는 자세한 방법은 CIS에서 계층 7공격 완화 를 참조하십시오.