Amazon Web Services 한국 블로그

AWS Verified Access: 비 HTTP(S) 프로토콜을 통한 리소스에 대한 보안 액세스 (미리보기)

AWS Verified Access를 사용하면 가상 프라이빗 네트워크(VPN) 없이 기업 애플리케이션 및 리소스에 안전하게 액세스할 수 있습니다. 2년 전 re:Invent에서 Verified Access를 평가판으로 출시했습니다. AWS Verified Access는 기업 애플리케이션에 VPN이 필요 없는 안전한 액세스를 제공하기 위한 방법으로, 조직에서 IP 주소 대신 ID 및 디바이스 보안을 기반으로 네트워크 액세스를 관리할 수 있도록 함으로써 애플리케이션 액세스에 대한 제어 및 보안을 강화할 수 있습니다.

오늘 Verified Access는 비 HTTP(S) 애플리케이션 및 리소스에 대해 VPN이 필요 없는 안전한 액세스 기능을 갖춘 평가판을 출시합니다. 이 평가판을 사용하면 Secure Shell(SSH) 및 원격 데스크톱 프로토콜(RDP)과 같은 프로토콜을 통해 기업 리소스에 제로 트러스트로 액세스할 수 있습니다.

데이터베이스, 원격 데스크톱, Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스와 같은 내부 리소스에 대해 안전한 원격 액세스를 요구하는 조직이 점점 더 많아지고 있습니다. 기존 VPN 솔루션은 네트워크 액세스에 효과적이긴 하지만 광범위한 권한을 부여하고 민감한 데이터가 있는 인프라를 노출시킬 수 있는 세분화된 액세스 제어를 지원하지 않는 경우가 많습니다. 일부 조직에서는 배스천 호스트를 사용하여 액세스를 조정하지만 이러한 접근 방식을 사용하면 HTTP(S) 및 비 HTTP(S) 애플리케이션 전반에서 복잡성과 정책 불일치가 발생할 수 있습니다. 제로 트러스트 아키텍처의 등장으로 인해 이러한 격차는 모든 애플리케이션과 리소스에 걸쳐 일관된 액세스 정책을 확장하는 보안 액세스 솔루션의 필요성을 부각시키고 있습니다.

Verified Access는 기업 애플리케이션 및 리소스에 제로 트러스트 액세스 제어를 제공하여 이러한 요구 사항을 해결합니다. Verified Access는 SSH, RDP, Java Database Connectivity(JDBC) 또는 Open Database Connectivity(ODBC)와 같은 프로토콜을 지원함으로써 보안 운영을 간소화합니다. 이제 기업 애플리케이션 및 리소스 전반에 걸쳐 일관된 컨텍스트 인식 액세스 정책을 수립할 수 있습니다. Verified Access는 각 액세스 요청을 실시간으로 평가하여 특정 ID 및 디바이스 보안 요구 사항을 충족하는 사용자에게만 액세스 권한을 부여합니다. 또한 별도의 VPN 또는 배스천 호스트가 필요하지 않으므로 운영이 간소화되고 권한을 초과하는 액세스의 위험이 줄어듭니다.

제가 가장 좋아하는 기능 중 하나는 리소스를 한 번에 하나씩 온보딩하는 대신 IP CIDR(Classless Inter-Domain Routing) 및 포트를 지정하여 리소스 그룹을 온보딩하는 것입니다. Verified Access는 지정된 CIDR 범위 내의 각 활성 리소스에 대한 DNS 레코드를 자동으로 생성합니다. 따라서 수동으로 DNS를 구성할 필요가 없으므로 사용자는 새 리소스에 즉시 연결할 수 있습니다.

비 HTTPS 액세스에 Verified Access 사용
비 HTTPS 액세스에 Verified Access를 구성하는 것은 현재 구성되어 있는 것과 크게 다르지 않습니다. 2년 전에 평가판 출시를 위해 작성한 블로그 게시물 또는 Verified Access 시작하기 자습서를 통해 시작하는 방법을 배울 수 있습니다.

Verified Access는 두 가지 새로운 유형의 엔드포인트 대상을 제안합니다. 하나는 단일 리소스에 대한 대상이고 다른 하나는 여러 리소스에 대한 대상입니다.

네트워크 인터페이스, 로드 밸런서 또는 RDS 엔드포인트 대상을 사용하여 개별 리소스에 대한 액세스를 제공할 수 있습니다. 개별 리소스의 예로는 Amazon Relational Database Service(Amazon RDS) 인스턴스 또는 Network Load Balancer탄력적 네트워크 인터페이스가 있는 임의의 TCP 애플리케이션입니다. 이 유형의 대상 엔드포인트는 대상 유형(예: 로드 밸런서 또는 네트워크 인터페이스)과 TCP 포트 범위의 조합으로 정의됩니다. Verified Access는 생성 시 각 엔드포인트의 DNS 이름을 제공합니다. Verified Access DNS 이름이 각 대상에 할당됩니다. 최종 사용자가 리소스에 안전하게 액세스하는 데 사용할 이름입니다.

네트워크 CIDR 엔드포인트 대상의 경우 IP CIDR 및 포트 범위를 사용하여 리소스를 정의합니다. 이러한 유형의 엔드포인트 대상을 통해 SSH 및 RDP와 같은 프로토콜에서 임시 리소스(예: EC2 인스턴스)에 대한 보안 액세스를 쉽게 프로비저닝할 수 있습니다. 리소스를 추가하거나 제거할 때마다 엔드포인트 대상을 생성하거나 삭제하는 등의 작업을 수행할 필요 없이 완료할 수 있습니다. 정의된 CIDR의 IP 주소가 이 리소스에 할당되는 한, Verified Access는 정의된 CIDR에서 탐지된 각 활성 IP에 대해 고유한 퍼블릭 DNS 레코드를 제공합니다.

다음은 이 데모의 설정 다이어그램입니다.

AWS Verified Access 데모 설정

1부: Verified Access 관리자로서

Verified Access 관리자로서 저는 Verified Access 인스턴스, 신뢰 공급자, 액세스 그룹, 엔드포인트액세스 정책을 생성하여 최종 사용자가 SSH 서버에 액세스할 수 있도록 합니다.

이 데모에서는 Verified Access 네트워크 CIDR 엔드포인트 대상을 구성합니다. 프로토콜TCP를 선택하고 엔드포인트 유형으로 네트워크 CIDR을 선택합니다. CIDR 범위가 대상 리소스가 있는 VPC 중 하나에 있는지 확인합니다. VPC 내에서 TCP 포트 범위서브넷을 선택합니다.

AVA : 엔드포인트 생성

다리를 쭉 펴고 커피 한 잔을 리필하기에 좋은 순간입니다. 엔드포인트를 생성하는 데 몇 분 정도 걸리기 때문이죠.

상태가 ✅ 활성인 경우 프라이빗 Amazon Virtual Private Cloud(Amazon VPC)에서 EC2 인스턴스를 시작합니다. SSH를 활성화하고 VPC에서 들어오는 요청에만 액세스하도록 인스턴스의 보안 그룹을 구성합니다. 몇 분 후 인스턴스 IP가 탐지되어 Verified Access 클라이언트 애플리케이션에서 연결할 DNS 이름이 할당된 것을 볼 수 있습니다.

구성 중에 secure.mycompany.com과 같은 자체 DNS 하위 도메인을 위임할 수 있는 옵션도 있습니다. 그러면 Verified Access를 통해 해당 하위 도메인 내의 리소스에 DNS 이름을 할당할 수 있습니다.

AVA: DNS 이름

액세스 정책 생성

이 단계에서는 Verified Access 엔드포인트에 정의된 정책이 없습니다. 이런 경우 기본적으로 모든 요청을 거부합니다.

Verified Access 그룹 페이지에서 정책 탭을 선택합니다. 그런 다음, Verified Access 엔드포인트 정책 수정(Modify Verified Access endpoint policy) 버튼을 선택하여 액세스 정책을 만듭니다.

Verified Access - 그룹 정책 탭

이메일 주소가 @amazon.com으로 끝나는 인증된 모든 사람을 허용하는 정책을 입력합니다. 이 주소는 AWS IAM Identity Center에 정의된 사용자에게 사용한 이메일 주소입니다. 참고로 컨텍스트 이후의 이름은 Verified Access 트러스트 제공자를 만들 때 정책 참조 이름으로 입력한 이름입니다. 설명서 페이지에 정책 구문, 속성 및 사용할 수 있는 연산자에 대한 자세한 정보가 나와 있습니다.

permit(principal, action, resource)
when {
    context.awsnewsblog.user.email.address like "*@amazon.com"
};

Verified Access - 그룹 정의 정책

몇 분이 지나면 Verified Access가 정책을 업데이트하고 다시 활성 상태가 됩니다.

해당 구성을 클라이언트에 배포

Verified Access 관리자로서 마지막 작업은 클라이언트 애플리케이션의 JSON 구성 파일을 추출하는 것입니다.

AWS Command Line Interface(AWS CLI)를 사용하여 클라이언트 애플리케이션 구성 파일을 검색합니다. 시스템 관리자로서 저는 이 구성을 각 클라이언트 시스템에 배포할 예정입니다.

aws ec2 export-verified-access-instance-client-configuration \
     --verified-access-instance-id "vai-0dbf2c4c011083069"

{
    "Version": "1.0",
    "VerifiedAccessInstanceId": "vai-0dbf2c4c011083069",
    "Region": "us-east-1",
    "DeviceTrustProviders": [],
    "UserTrustProvider": {
        "Type": "iam-identity-center",
        "Scopes": "verified_access_test:application:connect",
        "Issuer": "https://identitycenter.amazonaws.com/ssoins-xxxx",
        "PkceEnabled": true
    },
    "OpenVpnConfigurations": [
        {
            "Config": "Y2...bWU=",
            "Routes": [
                {
                    "Cidr": "2600:1f10:4a02:8700::/57"
                }
            ]
        }
    ]
}

이제 연결할 리소스와 Verified Access 인프라가 준비되었으니, 네트워크 엔드포인트에 액세스하는 최종 사용자 환경을 보여 드리겠습니다.

2부: 최종 사용자로서

최종 사용자로서 Verified Access Connectivity Client 애플리케이션을 다운로드 및 설치할 수 있는 링크를 받았습니다. 이 블로그를 작성하는 시점에는 Windows 및 macOS 클라이언트를 지원합니다.

관리자로부터 받은 구성 파일을 설치합니다. ClientConfig1.json을 파일 이름으로 사용하고 Windows에서는 C:\ProgramData\AWSPylon에 macOS에서는 /Library/Application Support/com.aws.pylon.client에 파일을 복사합니다.

이 구성 파일은 모든 사용자에 대해 동일하며, 시스템 관리자는 엔드포인트 관리 도구를 사용하여 이 파일을 모든 클라이언트 시스템에 푸시할 수 있습니다.

Connectivity Client 애플리케이션을 시작합니다. 로그인을 선택하여 인증 순서를 시작합니다.

AVA Client: 로그인인증을 클릭하면 ID 제공업체의 인증 페이지에서 웹 브라우저가 열립니다. 정확한 화면과 로그인 순서는 제공업체마다 다릅니다. 인증이 되면 Connectivity Client에서 보안 터널을 생성하여 리소스인 이 데모용 EC2 인스턴스에 액세스합니다.

AVA 클라이언트: 연결 중 AVA 클라이언트: 연결됨

상태가 연결됨으로 바뀌면 Verified Access에서 제공한 DNS 이름을 사용하여 리소스에 안전하게 연결할 수 있습니다. 터미널 애플리케이션에서 ssh 명령을 입력하여 연결을 시작합니다.

이 데모에서는 Verified Access를 위해 위임된 DNS 도메인 secure.mycompany.com을 구성했습니다. EC2 인스턴스에 대해 받은 DNS 주소는 10-0-1-199.awsnews.ecure.mycompany.com입니다.

$ ssh -i mykey.pem ec2-user@10-0-1-199.awsnews.secure.mycompany.com

   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://thinkwithwp.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
마지막 로그인: 2024년 11월 17일 토요일 20시 17분 46초부터 1.2.3.4

$

가용성 및 요금
Verified Access는 다음 19개 AWS 리전에서 공개 평가판으로 사용할 수 있습니다. 해당 리전은 미국 동부(오하이오, 버지니아 북부), 미국 서부(캘리포니아 북부, 오레곤), 아시아 태평양(자카르타, 뭄바이, 서울, 싱가포르, 시드니, 도쿄), 캐나다(중부), 유럽(프랑크푸르트, 아일랜드, 런던, 밀라노, 파리, 스톡홀름), 이스라엘(텔아비브), 남아메리카(상파울루) 리전입니다.

비 HTTP(S) Verified Access 엔드포인트가 활성 상태로 유지되는 시간당 및 연결당 요금이 부과됩니다. 각 Verified Access 엔드포인트에서 매월 처음 100개의 연결은 무료입니다. 자세한 내용은 AWS Verified Access 요금을 참조하세요.

HTTP(S) 및 비 HTTP(S) 애플리케이션에 대해 Verified Access를 사용하면 프라이빗 애플리케이션 및 시스템에 대한 액세스 제어를 통합하고 제로 트러스트 정책을 모든 애플리케이션과 SSH, RDP 및 HTTP(S) 리소스에 균일하게 적용할 수 있습니다. 네트워크 인프라의 복잡성을 줄이고 애플리케이션 및 리소스에 대한 제로 트러스트 액세스를 구현하는 데 도움이 됩니다. 마지막으로, 확장되는 인프라에 맞게 조정되어 DNS 설정을 자동화하고 리소스별로 등록을 하지 않고도 대규모 배포를 지원합니다.

지금 바로 Verified Access를 사용해 보고 피드백을 팀과 공유하세요!

— seb