기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
퍼블릭 서브넷에 대한 예방적 속성 기반 액세스 제어 배포
작성자: Joel Alfredo Nunez Gonzalez(AWS) 및 Samuel Ortega Sancho(AWS)
요약
중앙 집중식 네트워크 아키텍처에서 검사 및 엣지 Virtual Private Cloud(VPC)는 인터넷으로 들어오고 나가는 트래픽과 같은 모든 인바운드 및 아웃바운드 트래픽을 집중시킵니다. 하지만 이로 인해 병목 현상이 발생하거나 AWS service quotas 한도에 도달할 수 있습니다. VPC의 워크로드와 함께 네트워크 엣지 보안을 배포하면 일반적인 중앙 집중식 접근 방식에 비해 전례 없는 확장성을 제공합니다. 이를 분산 엣지 아키텍처라고 합니다.
워크로드 계정에 퍼블릭 서브넷을 배포하면 이점을 얻을 수 있지만 공격 표면이 증가하므로 새로운 보안 위험도 발생합니다. 이러한 VPC의 퍼블릭 서브넷에는 Application Load Balancer 또는 NAT 게이트웨이와 같은 Elastic Load Balancing(ELB) 리소스만 배포하는 것이 좋습니다. 전용 퍼블릭 서브넷에서 로드 밸런서와 NAT 게이트웨이를 사용하면 인바운드 및 아웃바운드 트래픽을 세밀하게 제어할 수 있습니다.
ABAC(속성 기반 액세스 제어)는 부서, 직무, 팀 이름 등의 사용자 속성을 기반으로 세분화된 권한을 생성하는 방식입니다. 자세한 내용은 AWS용 ABAC
이 패턴은 AWS Organizations의 서비스 제어 정책(SCP) 및 AWS Identity and Access Management(IAM)의 정책을 통해 ABAC를 구현함으로써 퍼블릭 서브넷을 보호하는 방법을 설명합니다. SCP를 조직의 구성원 계정이나 조직 단위(OU)에 적용합니다. 이러한 ABAC 정책은 사용자가 대상 서브넷에 NAT 게이트웨이를 배포하고 ECAmazon EC2EC2) 리소스를 배포하지 못하도록 허용합니다.
사전 조건 및 제한 사항
사전 조건
AWS Organizations의 조직
AWS Organizations 루트 계정에 대한 관리 액세스
조직에서 SCP 테스트를 위한 활성 구성원 계정 또는 OU
제한 사항
이 솔루션의 SCP는 서비스 연결 역할을 사용하는 AWS 서비스가 대상 서브넷에 리소스를 배포하는 것을 막지 않습니다. 이러한 서비스의 예로는 Elastic Load Balancing(ELB), Amazon Elastic Container Service(Amazon ECS) 및 Amazon Relational Database Service(RDS)가 있습니다. 자세한 내용은 AWS Organizations 설명서의 SCP가 권한에 미치는 영향을 참조하십시오. 보안 제어를 구현하여 이러한 예외를 탐지하십시오.
아키텍처
대상 기술 스택
AWS Organizations의 AWS 계정 또는 OU에 SCP 적용
IAM 역할은 다음과 같습니다.
AutomationAdminRole
– SCP 구현 후 서브넷 태그를 수정하고 VPC 리소스를 생성하는 데 사용TestAdminRole
– SCP가 관리 액세스 권한이 있는 사용자를 비롯한 다른 IAM 보안 주체가AutomationAdminRole
전용 작업을 수행하는 것을 막고 있는지 테스트하는 데 사용
대상 아키텍처

대상 계정에서
AutomationAdminRole
IAM 역할을 생성합니다. 이 역할에는 네트워킹 리소스를 관리할 권한이 있습니다. 이 역할에만 적용되는 다음 권한에 유의하십시오.이 역할은 VPC와 퍼블릭 서브넷을 생성할 수 있습니다.
이 역할은 대상 서브넷의 태그 할당을 수정할 수 있습니다.
이 역할은 자체 권한을 관리할 수 있습니다.
AWS Organizations에서는 대상 AWS 계정 또는 OU에 SCP를 적용합니다. 샘플 정책은 이 패턴의 추가 정보를 참조하십시오.
CI/CD 파이프라인의 사용자 또는 도구가 대상 서브넷에
SubnetType
태그를 적용하는AutomationAdminRole
역할을 맡을 수 있습니다.조직의 승인된 IAM 보안 주체는 다른 IAM 역할을 맡아 대상 서브넷의 NAT 게이트웨이와 AWS 계정의 기타 허용된 네트워킹 리소스(예: 라우팅 테이블)를 관리할 수 있습니다. IAM 정책을 사용하여 이러한 권한을 부여할 수 있습니다. 자세한 내용은 Amazon VPC의 자격 증명 및 액세스 관리를 참조하십시오.
자동화 및 규모 조정
퍼블릭 서브넷을 보호하려면 해당 AWS 태그를 적용해야 합니다. SCP를 적용한 후 NAT 게이트웨이는 승인된 사용자가 SubnetType:IFA
태그가 있는 서브넷에서 생성할 수 있는 유일한 종류의 Amazon EC2 리소스입니다. (IFA
는 인터넷 연결 자산을 의미합니다.) SCP는 인스턴스 및 탄력적 네트워크 인터페이스와 같은 다른 Amazon EC2 리소스의 생성을 방지합니다. 이러한 태그가 퍼블릭 서브넷에 올바르게 적용되도록 AutomationAdminRole
역할을 수임하는 CI/CD 파이프라인을 사용하여 VPC 리소스를 생성하는 것이 좋습니다.
도구
서비스
AWS Identity and Access Management(IAM)를 사용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.
AWS Organizations는 사용자가 생성하고 중앙에서 관리하는 조직으로 여러 AWS 계정을 통합할 수 있는 계정 관리 서비스입니다. AWS Organizations에서 조직의 권한을 관리하는 데 사용할 수 있는 정책 유형인 서비스 제어 정책(SCP)을 구현할 수 있습니다.
Amazon Virtual Private Cloud(VPC)를 이용하면 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 사용자의 자체 데이터 센터에서 운영하는 기존 네트워크와 유사하며 AWS의 확장 가능한 인프라를 사용한다는 이점이 있습니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
테스트 관리자 역할을 생성합니다. | 관리자 계정에서 | AWS 관리자 |
자동화 관리자 역할을 생성합니다. |
다음은
| AWS 관리자 |
SCP를 생성하고 연결합니다. |
| AWS 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
VPC 또는 서브넷을 생성합니다. |
| AWS 관리자 |
태그를 관리합니다. |
| AWS 관리자 |
대상 서브넷에 리소스를 배포합니다. |
| AWS 관리자 |
AutomationAdminRole 역할을 관리합니다. |
| AWS 관리자 |
관련 리소스
설명서
추가 AWS 참조
AWS Organizations의 서비스 제어 정책을 사용하여 권한 부여에 사용되는 리소스 태그
보호(AWS 블로그 게시물)
추가 정보
다음 서비스 제어 정책은 조직에서 이 접근 방식을 테스트하는 데 사용할 수 있는 예제입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyVPCActions",
"Effect": "Deny",
"Action": [
"ec2:CreateVPC",
"ec2:CreateRoute",
"ec2:CreateSubnet",
"ec2:CreateInternetGateway",
"ec2:DeleteVPC",
"ec2:DeleteRoute",
"ec2:DeleteSubnet",
"ec2:DeleteInternetGateway"
],
"Resource": [
"arn:aws:ec2:*:*:*"
],
"Condition": {
"StringNotLike": {
"aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"]
}
}
},
{
"Sid": "AllowNATGWOnIFASubnet",
"Effect": "Deny",
"NotAction": [
"ec2:CreateNatGateway",
"ec2:DeleteNatGateway"
],
"Resource": [
"arn:aws:ec2:*:*:subnet/*"
],
"Condition": {
"ForAnyValue:StringEqualsIfExists": {
"aws:ResourceTag/SubnetType": "IFA"
},
"StringNotLike": {
"aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"]
}
}
},
{
"Sid": "DenyChangesToAdminRole",
"Effect": "Deny",
"NotAction": [
"iam:GetContextKeysForPrincipalPolicy",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListInstanceProfilesForRole",
"iam:ListRolePolicies",
"iam:ListRoleTags"
],
"Resource": [
"arn:aws:iam::*:role/AutomationAdminRole"
],
"Condition": {
"StringNotLike": {
"aws:PrincipalARN": ["arn:aws:iam::*:role/AutomationAdminRole"]
}
}
},
{
"Sid": "allowbydefault",
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}