네트워크 보안 - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

네트워크 보안

네트워크 보안은 여러 하위 항목을 포괄하는 광범위한 주제입니다. 여기에는 전송 중 암호화, 네트워크 세분화 및 격리, 방화벽, 트래픽 라우팅 및 관찰 가능성이 포함됩니다.

전송 중 데이터 암호화

네트워크 트래픽을 암호화하면 권한이 없는 사용자가 네트워크를 통해 데이터가 전송될 때 데이터를 가로채거나 읽을 수 없습니다. Amazon ECS를 사용하면 다음 방법 중 하나를 사용하여 네트워크 암호화를 구현할 수 있습니다.

  • 서비스 메시 (TLS) 사용:

    다음으로 바꿉니다.AWS App Mesh에서 메시 끝점과 함께 배포되는 Envoy 프록시 간에 TLS 연결을 구성할 수 있습니다. 두 가지 예로는 가상 노드와 가상 게이트웨이가 있습니다. TLS 인증서는AWS Certificate Manager(ACM). 또는 자신의 개인 인증 기관에서 가져올 수 있습니다.

  • Nitro 인스턴스 사용:

    기본적으로 트래픽은 다음 Nitro 인스턴스 유형 간에 자동으로 암호화됩니다. C5n, Gn, I3en, M5dn, M5dn, M5dn, M5dn, M5dn, M5dn, M5dn, M5dn, M 트래픽은 전송 게이트웨이, 로드 밸런서 또는 유사한 중개자를 통해 라우팅될 때 암호화되지 않습니다.

  • Application Load Balancer SNI (서버 이름 표시) 사용

    ALB (Application Load Balancer) 및 NLB (Network Load Balancer) 는 SNI (서버 이름 표시) 를 지원합니다. SNI를 사용하면 여러 보안 응용 프로그램을 단일 수신기 뒤에 배치할 수 있습니다. 이를 위해 각각에는 자체 TLS 인증서가 있습니다. 다음을 사용하여 로드 밸런서에 대한 인증서를 프로비저닝하는 것이 좋습니다.AWS Certificate Manager(ACM) 을 클릭한 다음 리스너의 인증서 목록에 추가합니다. 이AWS로드 밸런서는 SNI와 함께 스마트 인증서 선택 알고리즘을 사용합니다. 클라이언트가 제공한 호스트 이름이 인증서 목록의 단일 인증서와 일치하면 로드 밸런서는 해당 인증서를 선택합니다. 클라이언트가 제공한 호스트 이름이 목록의 여러 인증서와 일치하면 로드 밸런서는 클라이언트가 지원할 수 있는 인증서를 선택합니다. 예를 들어 자체 서명된 인증서 또는 ACM을 통해 생성된 인증서가 있습니다.

  • TLS 인증서를 사용한 종단 간 암호화

    여기에는 작업과 함께 TLS 인증서를 배포하는 작업이 포함됩니다. 이 인증서란 자체 서명된 인증서이거나 신뢰할 수 있는 인증 기관의 인증서일 수 있습니다. 인증서에 대한 암호를 참조하여 인증서를 얻을 수 있습니다. 그렇지 않으면 ACM에 CSR (인증서 서명 요청) 을 발급한 다음 결과 암호를 공유 볼륨에 마운트하는 컨테이너를 실행하도록 선택할 수 있습니다.

작업 네트워킹

다음은 Amazon ECS의 작동 방식을 고려한 권장 사항입니다. Amazon ECS는 오버레이 네트워크를 사용하지 않습니다. 대신 작업이 서로 다른 네트워크 모드에서 작동하도록 구성됩니다. 예를 들어, 사용 하도록 구성 된 작업bridge모드는 각 호스트에서 실행되는 Docker 네트워크에서 라우팅 할 수없는 IP 주소를 얻습니다. 사용 하도록 구성 된 작업awsvpc네트워크 모드는 호스트의 서브넷에서 IP 주소를 획득합니다. 로 구성된 작업host네트워킹은 호스트의 네트워크 인터페이스를 사용합니다.awsvpc은 기본 설정 네트워크 모드입니다. 이는 보안 그룹을 작업에 할당하는 데 사용할 수 있는 유일한 모드이기 때문입니다. 또한 사용할 수 있는 유일한 모드이기도 합니다.AWS Fargate아마존 ECS에서 작업을 수행할 수 있습니다.

작업에 대한 보안 그룹

사용 하도록 작업을 구성하는 것이 좋습니다.awsvpc네트워크 모드입니다. 이 모드를 사용하도록 작업을 구성하면 Amazon ECS 에이전트가 ENI (엘라스틱 네트워크 인터페이스) 를 자동으로 프로비저닝하고 작업에 연결합니다. ENI가 프로비저닝되면 작업은AWS보안 그룹입니다. 보안 그룹은 인바운드 및 아웃바운드 트래픽을 제어하는 데 사용할 수 있는 가상 방화벽 역할을 합니다.

서비스 메쉬 및 상호 전송 계층 보안 (MTL)

다음과 같은 서비스 메쉬를 사용할 수 있습니다.AWS App Mesh를 사용하여 네트워크 트래픽을 제어할 수 있습니다. 기본적으로 가상 노드는 가상 노드가 통신할 가상 서비스와 같이 구성된 서비스 백엔드와만 통신할 수 있습니다. 가상 노드가 메시 외부의 서비스와 통신해야 하는 경우ALLOW_ALL아웃바운드 필터를 사용하거나 외부 서비스에 대한 메시 내에 가상 노드를 만들어 자세한 내용은 단원을 참조하십시오.쿠버네테스 송신 방법 연습.

또한 App Mesh 는 클라이언트와 서버가 인증서를 사용하여 상호 인증되는 MTL (상호 전송 계층 보안) 을 사용할 수 있는 기능을 제공합니다. 그런 다음 클라이언트와 서버 간의 후속 통신은 TLS를 사용하여 암호화됩니다. 메시의 서비스 간에 MTL을 요구하면 트래픽이 신뢰할 수 있는 원본에서 발생하는지 확인할 수 있습니다. 자세한 내용은 다음 항목을 참조하십시오.

AWS PrivateLink는 네트워킹 기술로서 서로 다른AWS서비스 (아마존 ECS를 포함). 엔드포인트는 Amazon VPC 연결된 Internet Gateway (IGW) 가 없고 인터넷에 대한 대체 경로가 없는 샌드박스 환경에서 필요합니다. 사용AWS PrivateLink는 Amazon ECS 서비스에 대한 호출이 Amazon VPC 내에 유지되고 인터넷을 통과하지 않도록 합니다. 만드는 방법에 대한 지침은 다음과 같습니다.AWS PrivateLink엔드포인트에 대한 자세한 내용은Amazon ECS 인터페이스 Amazon VPC 엔드포인트.

중요

AWS Fargate작업에는AWS PrivateLink엔드포인트를 사용할 수 있습니다.

Amazon ECR과 Amazon ECS는 모두 엔드포인트 정책을 지원합니다. 이러한 정책을 통해 서비스의 API에 대한 액세스를 세분화할 수 있습니다. 예를 들어, 이미지를 레지스트리에 푸시하는 것만 허용하는 Amazon ECR에 대한 엔드포인트 정책을 생성할 수 있습니다.AWS계정을 참조하십시오. 이와 같은 정책을 사용하여 컨테이너 이미지를 통해 데이터가 유출되는 것을 방지하고 사용자가 승인된 Amazon ECR 레지스트리로 푸시할 수 있습니다. 자세한 내용은 단원을 참조하십시오.VPC 엔드포인트 정책 사용.

다음 정책은 모든AWS사용자 계정의 보안 주체를 사용하여 Amazon ECR 리포지토리에 대해서만 모든 작업을 수행할 수 있습니다.

{ "Statement": [ { "Sid": "LimitECRAccess", "Principal": "*", "Action": "*", "Effect": "Allow", "Resource": "arn:aws:ecr:region:your_account_id:repository/*" }, ] }

당신은 더 새로운 사용하는 조건을 설정하여이를 향상시킬 수 있습니다PrincipalOrgID속성입니다. 이렇게 하면 사용자의 일부가 아닌 IAM 보안 주체가 이미지를 푸시하고 당기는 것을 방지할 수 있습니다.AWS Organizations. 자세한 내용은 단원을 참조하십시오.aws:PrincipalOrgID.

우리는 두 가지 모두에 동일한 정책을 적용하는 것이 좋습니다com.amazonaws.region.ecr.dkrcom.amazonaws.region.ecr.api엔드포인트.

Amazon ECS 컨테이너 에이전트 설정

Amazon ECS 컨테이너 에이전트 구성 파일에는 네트워크 보안과 관련된 몇 가지 환경 변수가 포함되어 있습니다.ECS_AWSVPC_BLOCK_IMDSECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST는 Amazon EC2 메타데이터에 대한 작업의 액세스를 차단하는 데 사용됩니다.HTTP_PROXY는 HTTP 프록시를 통해 라우팅하여 인터넷에 연결하도록 에이전트를 구성하는 데 사용됩니다. 프록시를 통해 라우팅되도록 에이전트 및 Docker 런타임을 구성하는 방법은HTTP 프록시 구성.

중요

이러한 설정을 사용할 때 사용할 수 없습니다.AWS Fargate.

Recommendations

Amazon VPC, 로드 밸런서 및 네트워크를 설정할 때 다음을 수행하는 것이 좋습니다.

해당하는 경우 네트워크 암호화 사용

해당하는 경우 네트워크 암호화를 사용해야 합니다. PCI DSS와 같은 특정 규정 준수 프로그램은 데이터에 카드 소지자 데이터가 포함된 경우 전송 중인 데이터를 암호화해야 합니다. 워크로드에 비슷한 요구 사항이 있는 경우 네트워크 암호화를 구성합니다.

최신 브라우저는 안전하지 않은 사이트에 연결할 때 사용자에게 경고합니다. 서비스가 공용 부하 분산 장치에 의해 선두되는 경우 TLS/SSL을 사용하여 클라이언트 브라우저에서 로드 밸런서로의 트래픽을 암호화하고 보증이 필요한 경우 백엔드로 다시 암호화합니다.

사용awsvpc작업 간 또는 작업과 다른 네트워크 리소스 간의 트래픽을 제어해야 하는 경우 네트워크 모드 및 보안 그룹

를 사용해야 합니다.awsvpc네트워크 모드 및 보안 그룹을 사용하여 작업 간, 작업 및 기타 네트워크 리소스 간의 트래픽을 제어해야 하는 경우 ALB 뒤에있는 서비스의 경우 보안 그룹을 사용하여 ALB와 동일한 보안 그룹을 사용하는 다른 네트워크 리소스의 인바운드 트래픽만 허용하십시오. 애플리케이션이 NLB 뒤에 있는 경우 Amazon VPC CIDR 범위의 인바운드 트래픽과 NLB에 할당된 고정 IP 주소만 허용하도록 작업의 보안 그룹을 구성합니다.

또한 Amazon RDS 데이터베이스와 같은 Amazon VPC 내의 다른 리소스와 태스크 간의 트래픽을 제어하는 데에도 보안 그룹을 사용해야 합니다.

네트워크 트래픽을 엄격하게 격리해야 하는 경우 별도의 Amazon VPC에 클러스터를 생성합니다.

네트워크 트래픽을 엄격하게 격리해야 하는 경우 별도의 Amazon VPC에 클러스터를 생성해야 합니다. 이러한 요구 사항을 준수하지 않아도 되는 워크로드가 있는 클러스터에서 엄격한 보안 요구 사항이 있는 워크로드를 실행하지 마십시오. 엄격한 네트워크 격리가 필요한 경우 별도의 Amazon VPC에 클러스터를 생성하고 Amazon VPC 엔드포인트를 사용하여 다른 Amazon VPC에 서비스를 선택적으로 노출합니다. 자세한 내용은 단원을 참조하십시오.Amazon VPC 엔드포인트.

다음을 구성해야 합니다.AWS PrivateLink엔드포인트 엔드포인트 (보증 대상 경우) 보안 정책으로 인해 IGW (Internet Gateway) 를 Amazon VPC에 연결할 수 없는 경우AWS PrivateLink엔드포인트 및 기타 서비스 (예: Amazon ECR)AWS Secrets Manager및 Amazon CloudWatch 를 참조하십시오.

Amazon VPC 흐름 로그를 사용하여 장기 실행 작업으로 들어오고 나가는 트래픽 분석

Amazon VPC 흐름 로그를 사용하여 장기 실행 작업으로 들어오고 나가는 트래픽을 분석해야 합니다. 사용하는 작업awsvpc네트워크 모드는 자체 ENI를 얻습니다. 이렇게 하면 Amazon VPC 흐름 로그를 사용하여 개별 작업으로 들어오고 나가는 트래픽을 모니터링할 수 있습니다. Amazon VPC 흐름 로그 (v3) 에 대한 최근 업데이트로, vpc ID, 서브넷 ID, 인스턴스 ID 등의 트래픽 메타데이터로 로그를 보강합니다. 이 메타데이터는 조사 범위를 좁히는 데 사용할 수 있습니다. 자세한 내용은 단원을 참조하십시오.Amazon VPC 흐름 로그.

참고

컨테이너의 일시적인 특성으로 인해 흐름 로그가 항상 다른 컨테이너 또는 컨테이너와 다른 네트워크 리소스 간의 트래픽 패턴을 분석하는 효과적인 방법은 아닐 수 있습니다.