신규 고객은 더 이상 AWS Cloud9를 사용할 수 없습니다. AWS Cloud9의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세히 알아보기
AWS Systems Manager를 사용하여 수신하지 않는 EC2 인스턴스에 액세스
EC2 환경용으로 생성된 ‘수신하지 않는 EC2 인스턴스’는 AWS Cloud9이 해당 인스턴스의 인바운드 포트를 열 필요 없이 Amazon EC2 인스턴스에 연결할 수 있도록 합니다. 콘솔, 명령줄 인터페이스 또는 AWS CloudFormation 스택을 사용하여 EC2 환경을 생성할 때 수신 안 함 옵션을 선택할 수 있습니다. 콘솔 또는 명령줄 인터페이스를 사용하여 환경을 생성하는 방법의 자세한 내용은 단계 1: 환경 조성 섹션을 참조하세요.
중요
Systems Manager 세션 관리자를 사용하여 EC2 인스턴스에 대한 연결을 관리하는 데 따른 추가 요금은 없습니다.
콘솔의 Create environment(환경 생성) 섹션에서 환경 유형을 선택할 때, 인바운드 연결이 필요한 새 EC2 인스턴스 또는 다음 사항이 필요 없는 수신되지 않는 새 EC2 인스턴스를 선택할 수 있습니다.
-
새 EC2 인스턴스 – 이 설정을 사용하면 인스턴스의 보안 그룹에 수신 네트워킹 트래픽을 허용하는 규칙이 포함됩니다. 수신 네트워크 트래픽은 AWS Cloud9 연결용으로 승인된 IP 주소로 제한됩니다. AWS Cloud9은 열려 있는 인바운드 포트를 사용하여 SSH를 통해 해당 인스턴스에 연결할 수 있습니다. AWS Systems Manager Session Manager를 사용하는 경우 인바운드 포트를 열지 않고도(수신하지 않음) SSM을 통해 Amazon EC2 인스턴스에 액세스할 수 있습니다. 이 방법은 새 Amazon EC2 인스턴스에만 적용됩니다. 자세한 내용은 EC2 환경에 Systems Manager 사용하는 데 따른 이점 단원을 참조하십시오.
-
기존 컴퓨팅 - 이 설정을 사용하면 SSH 로그인 세부 정보가 필요한 기존 Amazon EC2 인스턴스에 액세스할 수 있으며, 이 경우 인스턴스에 인바운드 보안 그룹 규칙이 있어야 합니다. 이 옵션을 선택하면 서비스 역할이 자동으로 생성됩니다. 설정 화면 하단에 표시되는 메모에서 서비스 역할의 이름을 확인할 수 있습니다.
AWS CLI를 사용하여 환경을 생성하는 경우 create-environment-ec2
명령을 호출할 때 --connection-type CONNECT_SSM
옵션을 설정하여 수신하지 않는 EC2 인스턴스를 구성할 수 있습니다. 필요한 서비스 역할 및 인스턴스 프로파일을 생성하는 방법에 대한 자세한 내용은 AWS CLI를 사용하여 Systems Manager의 인스턴스 프로파일 관리 섹션을 참조하세요.
수신하지 않는 EC2 인스턴스를 사용하는 환경의 생성을 완료한 후 다음을 확인합니다.
-
Systems Manager Session Manager에는 사용자를 대신하여 EC2 인스턴스에 대한 작업을 수행할 수 있는 권한이 있습니다. 자세한 내용은 Systems Manager 권한 관리 단원을 참조하십시오.
-
AWS Cloud9는 Session Manager에서 관리하는 인스턴스에 액세스할 수 있습니다. 자세한 내용은 사용자에게 세션 관리자에서 관리하는 인스턴스에 대한 액세스 권한 부여 단원을 참조하십시오.
EC2 환경에 Systems Manager 사용하는 데 따른 이점
세션 관리자가 AWS Cloud9과 EC2 인스턴스 간의 보안 연결을 처리하도록 허용하면 다음과 같은 두 가지 주요 이점이 있습니다.
-
인스턴스를 위해 인바운드 포트를 열어야 하는 요구 사항 없음
-
퍼블릭 또는 프라이빗 서브넷으로 인스턴스를 시작하는 옵션
Systems Manager 권한 관리
Systems Manager는 기본적으로 EC2 인스턴스에서 작업을 수행할 권한이 없습니다. 액세스는 AWS Identity and Access Management(IAM) 인스턴스 프로파일을 통해 제공됩니다. (인스턴스 프로파일은 시작할 때 IAM 역할 정보를 EC2 인스턴스에 전달하는 컨테이너입니다.)
AWS Cloud9 콘솔을 사용하여 수신하지 않는 EC2 인스턴스를 생성 때, 서비스 역할(AWSCloud9SSMAccessRole
) 및 IAM 인스턴스 프로파일(AWSCloud9SSMInstanceProfile
)이 자동으로 생성됩니다. (AWSCloud9SSMAccessRole
을 IAM 관리 콘솔에서 확인할 수 있습니다. 인스턴스 프로파일은 IAM 콘솔에 표시되지 않습니다.)
중요
처음으로 AWS CLI를 사용하여 수신하지 않는 EC2 환경을 생성하는 경우 필요한 서비스 역할과 인스턴스 프로파일을 명시적으로 정의해야 합니다. 자세한 내용은 AWS CLI를 사용하여 Systems Manager의 인스턴스 프로파일 관리 단원을 참조하십시오.
중요
AWS Cloud9 환경을 생성하고 AWSCloud9Administrator
또는 AWSCloud9User
정책이 연결된 Amazon EC2 Systems Manager를 사용하는 경우 특정 IAM 권한이 있는 사용자 지정 정책도 연결해야 합니다. SSM 환경 생성을 위한 사용자 지정 IAM 정책을 참조하세요. 이는 AWSCloud9Administrator
및 AWSCloud9User
정책의 권한 문제 때문입니다.
보안을 더 강화하기 위해 AWS Cloud9 서비스 연결 역할인 AWSServiceRoleforAWSCloud9
의 AWSCloud9ServiceRolePolicy
정책에는 PassRole
제한이 포함되어 있습니다. IAM 역할을 서비스에 전달(pass)할 경우, 해당 서비스가 역할을 수임하고 사용자 대신 작업을 수행할 수 있습니다. 이 경우 PassRole
권한은 AWS Cloud9이 AWSCloud9SSMAccessRole
역할(및 해당 권한)만 EC2 인스턴스에 전달할 수 있도록 합니다. 이렇게 하면 EC2 인스턴스에 대해 수행할 수 있는 작업이 AWS Cloud9에 필요한 작업만으로 제한됩니다.
참고
인스턴스에 액세스하기 위해 Systems Manager를 더 이상 사용할 필요가 없는 경우 AWSCloud9SSMAccessRole
서비스 역할을 삭제할 수 있습니다. 자세한 내용은 IAM 사용 설명서에서 역할 또는 인스턴스 프로필 삭제를 참조하세요.
AWS CLI를 사용하여 Systems Manager의 인스턴스 프로파일 관리
AWS CLI를 사용하여, 수신하지 않는 EC2 환경을 생성할 수도 있습니다. create-environment-ec2
를 호출할 때 --connection-type
옵션을 CONNECT_SSM
으로 설정합니다.
이 옵션을 사용하면 AWSCloud9SSMAccessRole
서비스 역할 및 AWSCloud9SSMInstanceProfile
이 자동으로 생성되지 않습니다. 따라서 다음 중 하나를 수행하여 필요한 서비스 프로파일과 인스턴스 프로파일을 생성합니다.
-
이후
AWSCloud9SSMAccessRole
서비스 역할과AWSCloud9SSMInstanceProfile
이 자동으로 생성되고 나면 콘솔을 사용하여 EC2 환경을 생성합니다. 생성된 서비스 역할 및 인스턴스 프로파일은 AWS CLI를 사용하여 생성한 모든 추가 EC2 환경에 사용할 수 있습니다. -
다음 AWS CLI 명령을 실행하여 서비스 역할 및 인스턴스 프로파일을 생성합니다.
aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"] },"Action": "sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/ aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole
사용자에게 세션 관리자에서 관리하는 인스턴스에 대한 액세스 권한 부여
Systems Manager를 통해 EC2 인스턴스에 연결된 AWS Cloud9 환경을 열려면, 사용자에게 StartSession
API 작업에 대한 권한이 있어야 합니다. 이 작업은 세션 관리자 세션을 위해 관리형 EC2 인스턴스에 대한 연결을 시작합니다. AWS Cloud9 전용 관리형 정책을 사용(권장)하거나 IAM 정책을 편집하고 필요한 권한을 추가하여 사용자에게 액세스 권한을 부여할 수 있습니다.
메서드 | 설명 |
---|---|
AWS Cloud9 전용 관리형 정책 사용 |
AWS 관리형 정책을 사용하여 사용자가 Systems Manager에서 관리되는 EC2 인스턴스에 액세스하도록 허용하는 것이 좋습니다. 관리형 정책은 표준 AWS Cloud9 사용 사례를 위한 일련의 권한을 제공하며 IAM 엔터티에 쉽게 연결할 수 있습니다. 또한 모든 관리형 정책에는
중요AWS Cloud9 환경을 생성하고 자세한 내용은 AWS Cloud9의 AWS 관리형 정책 단원을 참조하십시오. |
IAM 정책 편집 및 필요한 정책 문 추가 |
기존 정책을 편집하려면 정책을 편집할 때 |
다음 권한을 사용하여 StartSession
API 작업을 실행할 수 있습니다. ssm:resourceTag
조건 키는 인스턴스가 AWS Cloud9 EC2 개발 환경(aws:cloud9:environment
)인 것을 조건으로, 모든 인스턴스(Resource: arn:aws:ec2:*:*:instance/*
)에 대해 세션 관리자 세션을 시작할 수 있도록 지정합니다.
참고
다음 관리형 정책에는 AWSCloud9Administrator
, AWSCloud9User
및 AWSCloud9EnvironmentMember
정책 문도 포함되어 있습니다.
{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloud9.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }
AWS CloudFormation을 사용하여 수신하지 않는 EC2 환경 생성
AWS CloudFormation 템플릿를 사용하여 수신하지 않는 Amazon EC2 개발 환경을 정의할 경우, 스택을 생성하기 전에 다음을 수행합니다.
-
AWSCloud9SSMAccessRole
서비스 역할 및AWSCloud9SSMInstanceProfile
인스턴스 프로파일을 생성합니다. 자세한 내용은 AWS CloudFormation 템플릿을 사용하여 서비스 역할 및 인스턴스 프로파일 생성 단원을 참조하십시오. -
AWS CloudFormation을 호출하는 IAM 엔터티에 대한 정책을 업데이트합니다. 이렇게 하면 해당 엔터티는 EC2 인스턴스에 연결하는 Session Manager 세션을 시작할 수 있습니다. 자세한 내용은 IAM 정책에 Systems Manager 권한 추가 단원을 참조하십시오.
AWS CloudFormation 템플릿을 사용하여 서비스 역할 및 인스턴스 프로파일 생성
Systems Manager가 개발 환경을 지원하는 EC2 인스턴스를 관리할 수 있도록 서비스 역할 AWSCloud9SSMAccessRole
및 인스턴스 프로파일 AWSCloud9SSMInstanceProfile
을 생성해야 합니다.
이전에 with the console하거나 AWS CLI 명령을 실행하여 수신하지 않는 EC2 환경을 생성함으로써 AWSCloud9SSMAccessRole
및 AWSCloud9SSMInstanceProfile
을 생성한 경우, 서비스 역할과 인스턴스 프로파일을 이미 사용할 수 있습니다.
참고
수신하지 않는 EC2 환경에 대한 AWS CloudFormation 스택을 생성하려고 하지만 먼저 필요한 서비스 역할과 인스턴스 프로파일을 생성하지 않았다고 가정합니다. 그러면 스택이 생성되지 않고 다음과 같은 오류 메시지가 표시됩니다.
Instance profile AWSCloud9SSMInstanceProfile does not exist in account
(인스턴스 프로파일 AWSCloud9SSMInstanceProfile이 계정에 없습니다.)
AWS CloudFormation을 사용하여 수신하지 않는 EC2 환경을 처음으로 생성하는 경우, 템플릿에서 AWSCloud9SSMAccessRole
및 AWSCloud9SSMInstanceProfile
을 IAM 리소스로 정의할 수 있습니다.
샘플 템플릿에서 발췌한 이 코드는 이러한 리소스를 정의하는 방법을 보여줍니다. AssumeRole
작업은 AWS Cloud9 환경과 그 EC2 인스턴스 모두에 대한 액세스를 제공하는 보안 인증 정보를 반환합니다.
AWSTemplateFormatVersion: 2010-09-09 Resources: AWSCloud9SSMAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - cloud9.amazonaws.com - ec2.amazonaws.com Action: - 'sts:AssumeRole' Description: 'Service linked role for AWS Cloud9' Path: '/service-role/' ManagedPolicyArns: - arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile RoleName: 'AWSCloud9SSMAccessRole' AWSCloud9SSMInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: InstanceProfileName: AWSCloud9SSMInstanceProfile Path: "/cloud9/" Roles: - Ref: AWSCloud9SSMAccessRole
IAM 정책에 Systems Manager 권한 추가
AWS CloudFormation 템플릿에 서비스 역할과 인스턴스 프로파일을 정의한 후에는 스택을 생성하는 IAM 엔터티에 Session Manager 세션을 시작할 권한이 있는지 확인해야 합니다. 세션은 Session Manager를 사용한 EC2 인스턴스에 대한 연결입니다.
참고
수신하지 않는 EC2 환경을 위한 스택을 생성하기 전에 세션 관리자 세션을 시작할 권한을 추가하지 않으면 AccessDeniedException
오류가 반환됩니다.
AWS CloudFormation을 호출하여 IAM 엔터티에 대한 정책에 다음 권한을 추가합니다.
{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloudformation.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }
종속 구성 요소를 다운로드하도록 Amazon S3의 VPC 엔드포인트 구성
AWS Cloud9 환경의 EC2 인스턴스가 인터넷에 액세스할 수 없는 경우, 지정된 Amazon S3 버킷의 VPC 엔드포인트를 생성합니다. 이 버킷에는 IDE를 최신 상태로 유지하는 데 필요한 종속 구성 요소가 포함되어 있습니다.
또한 Amazon S3 VPC 엔드포인트를 설정하려면 액세스 정책을 사용자 지정해야 합니다. 액세스 정책에서는 다운로드할 종속 구성 요소가 포함된 신뢰할 수 있는 S3 버킷에 대한 액세스만 허용하고자 합니다.
참고
AWS Management Console, AWS CLI 또는 Amazon VPC API를 사용하여 VPC 엔드포인트를 생성하고 구성할 수 있습니다. 아래의 절차에서는 콘솔 인터페이스를 사용하여 VPC 엔드포인트를 생성하는 방법을 보여줍니다.
Amazon S3의 VPC 엔드포인트 생성 및 구성
-
AWS Management Console에서 Amazon VPC의 콘솔 페이지로 이동합니다.
-
탐색 모음에서 [엔드포인트(Endpoints)]를 선택합니다.
-
[엔드포인트(Endpoints)] 페이지에서 [엔드포인트 생성(Create Endpoint)]을 선택합니다.
-
Create Endpoint(엔드포인트 생성) 페이지에서 검색 필드에 ‘s3’를 입력하고 Return 키를 눌러 현재 AWS 리전의 Amazon S3에 사용 가능한 엔드포인트를 나열합니다.
-
반환된 Amazon S3 엔드포인트 목록에서 [게이트웨이(Gateway)] 유형을 선택합니다.
-
그런 다음, 환경의 EC2 인스턴스가 포함된 VPC 선택합니다.
-
이제 VPC의 라우팅 테이블을 선택합니다. 이렇게 하면 연결된 서브넷이 엔드포인트에 액세스할 수 있습니다. 환경의 EC2 인스턴스는 이들 서브넷 중 하나에 있습니다.
-
Policy(정책) 섹션에서 Custom(사용자 지정) 옵션을 선택하고 표준 정책을 다음으로 바꿉니다.
{ "Version": "2008-10-17", "Statement": [ { "Sid": "Access-to-C9-bucket-only", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*" } ] }
Resource
요소의 경우{bucket_name}
을 AWS 리전에서 사용 가능한 버킷의 실제 이름으로 바꿉니다. 예를 들어 EU(아일랜드) 리전에서 AWS Cloud9을 사용하는 경우"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/
를 지정합니다.다음 표에는 AWS Cloud9를 사용할 수 있는 AWS 리전의 버킷 이름이 나열되어 있습니다.
AWS Cloud9 리전의 Amazon S3 버킷 AWS 리전 버킷 이름 미국 동부(오하이오)
static-us-east-2-prod-static-1c3sfcvf9hy4m
미국 동부(버지니아 북부)
static-us-east-1-prod-static-mft1klnkc4hl
미국 서부(오레곤)
static-us-west-2-prod-static-p21mksqx9zlr
미국 서부(캘리포니아 북부)
static-us-west-1-prod-static-16d59zrrp01z0
아프리카(케이프타운)
static-af-south-1-prod-static-v6v7i5ypdppv
아시아 태평양(홍콩)
static-ap-east-1-prod-static-171xhpfkrorh6
아시아 태평양(뭄바이) static-ap-south-1-prod-static-ykocre202i9d
아시아 태평양(오사카) static-ap-northeast-3-prod-static-ivmxqzrx2ioi
아시아 태평양(서울) static-ap-northeast-2-prod-static-1wxyctlhwiajm
아시아 태평양(싱가포르) static-ap-southeast-1-prod-static-13ibpyrx4vk6d
아시아 태평양(시드니)
static-ap-southeast-2-prod-static-1cjsl8bx27rfu
아시아 태평양(도쿄)
static-ap-northeast-1-prod-static-4fwvbdisquj8
캐나다(중부)
static-ca-central-1-prod-static-g80lpejy486c
유럽(프랑크푸르트)
static-eu-central-1-prod-static-14lbgls2vrkh
유럽(아일랜드)
static-eu-west-1-prod-static-hld3vzaf7c4h
유럽(런던)
static-eu-west-2-prod-static-36lbg202837x
유럽(밀라노)
static-eu-south-1-prod-static-1379tzkd3ni7d
유럽(파리)
static-eu-west-3-prod-static-1rwpkf766ke58
유럽(스톡홀름)
static-eu-north-1-prod-static-1qzw982y7yu7e
중동(바레인)
static-me-south-1-prod-static-gmljex38qtqx
남아메리카(상파울루)
static-sa-east-1-prod-static-1cl8k0y7opidt
이스라엘(텔아비브)
static-il-central-1-prod-static-k02vrnhcesue
-
엔드포인트 생성을 선택합니다.
올바른 구성 정보를 제공한 경우, 생성된 엔드포인트의 ID가 메시지에 표시됩니다.
-
IDE가 Amazon S3 버킷에 액세스할 수 있는지 확인하려면 메뉴 모음에서 [창(Window)], [새 터미널(New Terminal)]을 선택하여 터미널 세션을 시작합니다. 그리고 나서 다음 명령을 실행하여
{bucket_name}
을 해당 리전용 버킷의 실제 이름으로 바꿉니다.ping {bucket_name}.s3.{region}.amazonaws.com.
예를 들어 S3 버킷에 대한 엔드포인트를 미국 동부(버지니아 북부) 리전에서 생성한 경우 다음 명령을 실행합니다.
ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com
ping 응답을 받으면 이는 IDE가 버킷 및 해당 종속 구성 요소에 액세스할 수 있음을 의미합니다.
이 기능에 관한 자세한 내용은 AWS PrivateLink 가이드에서 Amazon S3의 엔드포인트를 참조하세요.
프라이빗 연결을 위한 VPC 엔드포인트 구성
Systems Manager를 이용한 액세스 옵션을 사용하여 서브넷에서 인스턴스를 시작할 경우, 해당 보안 그룹에는 들어오는 네트워크 트래픽을 허용하는 인바운드 규칙이 없습니다. 하지만 이 보안 그룹에는 인스턴스의 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 있습니다. 이는 AWS Cloud9 IDE를 최신 상태로 유지하는 데 필요한 패키지와 라이브러리를 다운로드하는 데 필요합니다.
인스턴스에 대한 아웃바운드 및 인바운드 트래픽을 방지하려면 Systems Manager용 Amazon VPC 엔드포인트를 생성하고 구성하세요. 인터페이스 VPC 엔드포인트(인터페이스 엔드포인트)를 사용하면 AWS PrivateLink에 의해 구동되는 서비스에 연결할 수 있습니다. AWS PrivateLink는 프라이빗 IP 주소를 사용하여 Amazon EC2 및 Systems Manager API에 비공개로 액세스할 수 있는 기술입니다. Systems Manager를 사용하도록 VPC 엔드포인트를 구성하려면 이 지식 센터 리소스
주의
인바운드 또는 아웃바운드 네트워킹 트래픽을 허용하지 않는 보안 그룹을 구성한다고 가정해 보겠습니다. 그러면 AWS Cloud9 IDE를 지원하는 EC2 인스턴스가 인터넷에 액세스할 수 없습니다. VPC용 Amazon S3 엔드포인트를 생성하여 신뢰할 수 있는 S3 버킷에 포함된 종속 구성 요소에 대한 액세스를 허용해야 합니다. 또한 인터넷에 액세스할 수 없는 경우 AWS Lambda와 같은 일부 AWS 서비스도 정상적으로 작동하지 않을 수 있습니다.
AWS PrivateLink를 사용하면 VPC 엔드포인트를 통해 처리된 기가바이트당 데이터 처리 요금이 부과됩니다. 이는 트래픽의 소스 또는 대상에 관계없이 적용됩니다. 자세한 내용은 AWS PrivateLink 요금