S3 정책설정으로 특정 VPC 엔드포인트, 특정 IP 등으로 제어 할 수있다

 

1. 특정 VPC 엔드포인트에 대해서만 S3 버킷 접근 허용

  • 기본적으로 Deny 정책을 지니며, Condition 에 해당하는 SourceVpce 에 대해서만 허용하는 규칙
{
   "Version": "2012-10-17",
   "Id": "Policy1415115909152",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPCE-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::awsexamplebucket1",
                    "arn:aws:s3:::awsexamplebucket1/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpce": "vpce-1a2b3c4d"
         }
       }
     }
   ]
}

2. 특정 IP에 대해서만 S3 버킷 접근 허용

  • 기본적으로 Deny 정책을 지니며, Condition에 해당하는 SourceIP에 대해서만 허용하는 규칙
  • 주의 : SourceIP는 공인 IP만 지정할 수 있음
  • 참고 : 사설IP에 대한 IP 지정은 aws:VpcSourceIp 조건으로 사용 가능
{
    "Version": "2012-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ],
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "192.0.2.0/24"
                }
            }
        }
    ]
}

3. 특정 VPC 에서만 S3 버킷 접근 허용

  • 기본적으로 Deny 정책을 지니며, Condition에 해당하는 SourveVpc에 대해서만 허용하는 규칙
{
   "Version": "2012-10-17",
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::awsexamplebucket1",
                    "arn:aws:s3:::awsexamplebucket1/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpc": "vpc-111bbb22"
         }
       }
     }
   ]
}

 

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/add-bucket-policy.html

 

Amazon S3 콘솔을 사용하여 버킷 정책 추가 - Amazon Simple Storage Service

편의를 위해 버킷 정책 편집 페이지의 정책 텍스트 필드 위에 현재 버킷의 버킷 ARN(Amazon 리소스 이름)이 표시됩니다. AWS 정책 생성기 페이지의 명령문에 사용하기 위해 이 ARN을 복사할 수 있습니

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/amazon-s3-condition-keys.html

 

Amazon S3 조건 키 - Amazon Simple Storage Service

모든 조건이 전체 작업에 적용되는 것은 아닙니다. 예를 들어 s3:CreateBucket Amazon S3 권한을 부여하는 정책에는 s3:LocationConstraint 조건을 포함하는 것이 가능합니다. 그러나 s3:GetObject 권한을 부여하

docs.aws.amazon.com

 

'AWS' 카테고리의 다른 글

AWS Gateway Endpoint  (0) 2023.07.21
AWS 특정 트래픽 헬스체크 알람생성 방법  (0) 2023.07.16
AWS EC2 Instance Metadata(IMDS)  (0) 2023.07.10
AWS EKS SVC 로 NLB 사용 시 Time out 발생 현상  (1) 2023.07.09
EKS Config Update  (0) 2023.07.08

요약 : 여러 VPC 환경에 동일한 서비스를 배포하고 싶을때, Service Catalog 에 관련 템플릿을 생성 후, OU 단에서 공유하여 배포할 수 있습니다.

 

AWS Service Catalog를 사용하면 배포된 IT 서비스, 애플리케이션, 리소스 및 메타데이터를 중앙에서 관리하여 코드형 인프라(IaC) 템플릿에 일관된 거버넌스를 적용할 수 있습니다. AWS Service Catalog를 사용하면 규정 준수 요구 사항을 충족하는 동시에 승인된 IT 서비스를 고객에게 제공하여 필요한 서비스를 빠르게 배포하도록 지원할 수 있습니다.

 

AWS Service Catalog는 개발자가 모든 환경에서 인프라 구성 요소를 빠르고 안전하며 쉽게 배포할 수 있도록 지원합니다. 다음 다이어그램은 이 워크플로를 보여줍니다. 여기에서 AWS Service Catalog는 프로덕션 및 비프로덕션 인프라 구성 요소를 모두 애플리케이션 개발/QA/프로덕션 계정에 공유하는 데 사용됩니다.

 

 

https://aws.amazon.com/ko/blogs/mt/standardizing-infrastructure-delivery-in-distributed-environments-using-aws-service-catalog/

 

Standardizing infrastructure delivery in distributed environments using AWS Service Catalog | Amazon Web Services

A common security design pattern and best practice among many of our enterprise customers is to provide application isolation through the adoption of a multi-account strategy. Many customers choose to create individual AWS accounts based on software develo

aws.amazon.com

 

'AWS > ANS' 카테고리의 다른 글

Amazon Route 53 Resolver  (0) 2023.07.16
AWS TGW Appliance  (0) 2023.07.16
AWS ANS (Network) - NAT GW vs NAT Instance  (0) 2023.06.29
AWS ANS (Network) - DX Type  (0) 2023.06.27
AWS ANS (Network) - DX, VGW, VIF  (0) 2023.06.26

IMDS 란

인스턴스 메타데이터(IMDS)는 실행 중인 인스턴스를 구성 또는 관리하는 데 사용될 수 있는 인스턴스 관련 데이터입니다. 인스턴스 메타데이터는 예를 들어 호스트 이름, 이벤트 및 보안 그룹과 같은 범주로 분류됩니다. 인스턴스 메타데이터를 사용하여 인스턴스를 시작할 때 지정한 사용자 데이터에도 액세스할 수 있습니다. 예를 들어, 인스턴스를 구성하기 위한 파라미터를 지정하거나 단순 스크립트를 포함시킬 수 있습니다.

 

IMDS 버전

  • 인스턴스 메타데이터 서비스 버전 1(IMDSv1) – 요청/응답 방법
  • 인스턴스 메타데이터 서비스 버전 2(IMDSv2) – 세션 지향 방법

 

IMDSv2 설정 방법

새 AMI를 등록하거나 기존 AMI를 수정할 때 imds-support 파라미터를 v2.0로 설정할 수 있습니다. 이 AMI에서 시작된 인스턴스의 Metadata version(메타데이터 버전)은 V2 only (token required)(V2 전용(토큰 필요))(콘솔)로 설정되거나 HttpTokens는 required(AWS CLI)로 설정됩니다. 이러한 설정을 사용하면 인스턴스에서 인스턴스 메타데이터를 요청할 때 IMDSv2를 사용하도록 지정됩니다. imds-support를 v2.0으로 설정하면 이 AMI에서 시작된 인스턴스의 Metadata response hop limit(메타데이터 응답 홉 제한)(콘솔) 또는 http-put-response-hop-limit(AWS CLI)도 2로 설정됩니다.

 

IMDSv2 설정 방법 공식 문서

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/configuring-IMDS-new-instances.html

 

새 인스턴스에 대한 인스턴스 메타데이터 옵션 구성 - Amazon Elastic Compute Cloud

AMI 소프트웨어가 IMDSv2를 지원하지 않는 한 이 파라미터를 사용하지 마세요. 값을 v2.0으로 설정한 후에는 이를 실행 취소할 수 없습니다. AMI를 “재설정”하는 유일한 방법은 기본 스냅샷에 새 AM

docs.aws.amazon.com

 

IMDSv2 상세 내용 및 설명 영상

https://aws.amazon.com/ko/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/

 

 

Add defense in depth against open firewalls, reverse proxies, and SSRF vulnerabilities with enhancements to the EC2 Instance Met

July 27, 2021: We’ve updated the link to the 2019 re:Invent session on this topic. Since it first launched over 10 years ago, the Amazon EC2 Instance Metadata Service (IMDS) has helped customers build secure and scalable applications. The IMDS solved a b

aws.amazon.com

https://www.youtube.com/watch?v=2B5bhZzayjI 

 

AWS LB 에는 클라이언트 IP 보존을 위한 옵션이 있다. 단 이 옵션을 EKS 환경에서 이해없이 사용 시 일부 트래픽이 응답을 받지 못하는 현상이 발생한다. 이에대해 알아보자

 

1) 클라이언트 IP 보존 기능이 비활성화 되었을 때 통신의 흐름
- 기본적으로 클라이언트 IP 보존 기능이 비활성화 되면 NLB 는 출발지의 IP 주소를 NLB 의 내부 IP 주소로 재기록하여 타겟과 통신을 하게 됩니다.(NLB 의 IP로 대상을 찾음)
다만, NLB 의 타겟이 다시 타겟의 NLB 를 재귀적으로 호출 (예> POD -> NLB -> POD) 하는 구조일때, 클라이언트 IP 보존 기능이 활성화 되어 있을 경우 타겟인 POD 는 자신의 IP 주소가 목적지인 패킷을 전달받을 수 있으며 (여러 타겟들이 있을 경우), 이러한 패킷에 대해서는 Timeout 이 발생할 수 있음
따라서 위와 같은 상황에서는 간헐적으로 통신이 실패하는 상황이 발생할 수 있으며, 위와 같은 아키텍처에서는 클라이언트 IP 주소 보존 기능을 비활성화 권장

2) 해당 기능이 활성화 되어있을 때 통신의 흐름 (예> 포트/IP 가 변경되는지 등)
- 기본적으로 해당 기능이 활성화 되어 있을때는 포트, IP 주소가 재기록 되지 않음
- 다만, 헤어핀 (응답 패킷이 타겟에서 NLB 를 거치지 않고 클라이언트로 직접 전달) 기능은 지원하지 않으며, 다시 NLB 를 거쳐 NLB 가 클라이언트에게 직접 응답하도록 구성되어 있습니다.
- 즉, 이러한 경우 응답 패킷이 정상적으로 돌아가지 않는 것은 아니며, 출발지/목적지 IP 주소가 변경되지 않아도 NLB 의 내부동작에 의해 NLB 를 거쳐 클라이언트로 응답 패킷이 반환됨

 

요약하자면, EKS 에서 서비스를 사용할 경우, POD 가 NLB를 통해 POD를 재호출 하는경우 트래픽이 정상적으로 흐르지 않으며, 일부 트래픽에서 TIME OUT 이 발생 한다. 따라서, EKS 에서 서비스를 할 경우에는 SVC 옵션에 어논테이션을 추가하여 Client IP 보존 옵션을 OFF 하도록 하자 (LB 컨트롤러 필요)

 

https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/load-balancer-target-groups.html#client-ip-preservation

 

Network Load Balancer 대상 그룹 - Elastic Load Balancing

Network Load Balancer 대상 그룹 각 대상 그룹은 하나 이상의 등록된 대상에 요청을 라우팅하는 데 사용됩니다. 리스너를 생성할 때 기본 작업에 대한 대상 그룹을 지정합니다. 트래픽은 리스너 규칙

docs.aws.amazon.com

 

'AWS' 카테고리의 다른 글

AWS 특정 VPC, IP S3 버킷 허용 하는 방법  (0) 2023.07.11
AWS EC2 Instance Metadata(IMDS)  (0) 2023.07.10
EKS Config Update  (0) 2023.07.08
Multi Region Endpoint Sharing  (0) 2023.06.15
AWS EKS efs-csi-driver install  (0) 2023.06.07

aws eks update-kubeconfig --region region-code --name my-cluster

https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/create-kubeconfig.html

'AWS' 카테고리의 다른 글

AWS EC2 Instance Metadata(IMDS)  (0) 2023.07.10
AWS EKS SVC 로 NLB 사용 시 Time out 발생 현상  (1) 2023.07.09
Multi Region Endpoint Sharing  (0) 2023.06.15
AWS EKS efs-csi-driver install  (0) 2023.06.07
AWS Multi Region Network 구성  (0) 2023.06.07

+ Recent posts