AWS Systems Manager이란?
Systems Manger의 작동 방식
- Systems Manger 액세스 - Systems Manager 액세스(console, CLI, SDK)에 대해 사용 가능한 옵션 중 하나를 사용합니다.
- Systems Manager 기능 선택 - 리소스에 대해 수행할 작업을 수행하는 데 도움이 될 수 있는 기능을 확인합니다. 이 다이어그램은 IT 개발자와 DevOps 인력이 리소스를 구성하고 관리하는 데 사용하는 몇 가지 기능만 보여줍니다.
- 확인 및 처리 - Systems Manager는 AWS Identity and Access Management(IAM) 사용자, 그룹(OU) 또는 역할에 지정한 작업을 수행할 수 있는 권한이 있는지 확인합니다. 작업 대상이 관리형 노드인 경우 노드에서 실행 중인 Systems Manager Agent(SSM Agent)가 작업을 수행합니다. 다른 유형의 리소스의 경우 Systems Manager는 지정된 작업을 수행하거나 다른 AWS 서비스와 통신하여 Systems Manager를 대신하여 작업을 수행합니다.
- 보고 - Systems Manager, SSM Agent 및 Systems Manager를 대신하여 작업을 수행하는 기타 AWS 서비스의 상태를 보고합니다. Systems manager는 다른 AWS 서비스에 상태 세부 정보를 보낼 수 있습니다.
- Systems Manager 운영 관리 기능 - 활성화 된 경우 Systems Manager 운영 관리 기능(Explorer, OpsCenter), Incident Manager는 리소스의 이벤트나 오류에 대응하여 운영 데이터를 집계하거나 아티팩트를 생성합니다. 이러한 아티팩트에는 운영 작업 항목(OpsItems) 및 인시던트가 있습니다. System Manager 운영 관리 기능은 애플리케이션 및 리소스에 대한 운영 통찰력과 자동화된 문제 해결 솔루션을 제공하여 문제를 해결하는 데 도움을 줍니다.
요약 : 기존 것보다 더 좋은 것이 있다면 바꾼다!
AWS SSM으로 EC2 인스턴스 접근(SSH 대체) - session manager
Users를 하나 만들어 Access Key를 발급받아 aws CLI에 연결이 된 상태에서 진행됩니다.
IAM에서 EC2에 연결해줄 Role를 미리 만들어 줍시다.
위와 같이 설정을 해준 후 Next를 눌러줍니다. 여기서 EC2 Role for AWS Systems Manager를 선택해야합니다.
잘 따라 왔다면 별 다른 설정 없이도 위와 같이 AmazonSSMManagedInstanceCore라는 권한이 추가된 것을 확인할 수 있습니다. 이 권한만 있으면 됩니다. Next를 누른 후 Role name만 적어주고 Create Role를 눌러줍시다.
이제 ec2로 이동해서 private를 하나 만들어 보겠습니다.
ec2 설정은 위와 같이 Key-pair를 따로 만들어 주었고 vpc를 만들어 private-a 구역에 배치를 하고 security groups에 22번과 3306, 80, 443, 웹과 DB, SSH에 관련 기본적인 포트들만 열어두겠습니다.
그 후 만든 EC2를 클릭하여 설정에 들어와 Modify IAM role를 눌러줍니다.
아까 저희가 만든 IAM role이 있는 것을 확인할 수 있습니다. 저걸 선택한 후 Update IAM Role를 눌러줍니다.
그 후 테스트로 ssh 접속을 시도해 봐도 public IP가 없기 때문에 당연히 가능하지 않습니다. 그렇다고 Bation EC2가 존재하는 것도 아니기 때문에 접속이 불가능합니다.
하지만 여기까지 잘 따라 왔다면 "aws ssm start-session --target <instances ID>"를 입력하면 접속이 잘 되는 것을 확인할 수 있습니다.
+) 추가 설정 (2023-02-17) 계정의 모든 EC2 인스턴스에서 기본적으로 AWS Systems Manager를 활성화하는 기능 발표
이번 업데이트(2023-02-17)에서 AWS Systems Manager에 새로운 Default Host Management Configuration(DHMC)이라는 설정이 추가되었습니다.
이 DHMC는 SSM의 fleet manage에서 권한(IAM 역할)을 지정하는 형태로 설정합니다. 그리고 SSM Agent가 인스턴스 프로파일 대신 DHMC에 설정된 역할로부터 자격 증명을 취득하여 SSM의 각종 기능을 실현하는 형태가 됩니다.
- 기존의 작동
- SSM을 사용하는 EC2 인스턴스에 미리 정의된 인스턴스 프로파일 설정
- SSM Agent는 상기 인스턴스 프로파일의 권한으로 동작하여 SSM의 각종 기능을 실현합니다.
- DHMC를 사용한 경우의 동작
- SSM을 사용하는 EC2 인스턴스의 인스턴스 프로파일은 더 이상 필요하지 않습니다.
- EC2 인스턴스에 인스턴스 프로파일이 구성된 경우 SSM Agent는 인스턴스 프로파일의 권한으로 작동하여 SSM의 다양한 기능을 구현합니다.
- EC2 인스턴스에 인스턴스 프로파일이 설정되지 않은 경우 SSM Agent는 DHMC에 설정된 역할(IAM role)에서 자격 증명을 가져와 SSM의 다양한 기능을 구현합니다.
간단하게 말하면 "EC2 프로파일이 없을 때에 fallback되는 디폴드 룰"을 말합니다.
※ 주의) SSM Agent는 Ver.3.2.582.0 이상이여야한다. 이 이전의 SSM Agent는 DHMC를 지원하지 않습니다.
직접 해보기
먼저 DHMC에서 구성할 IAM 역할을 만들어 줍니다.
AWS에서 AmazonSSManagedEC2InstanceDefaultPolicy란 정책으로 만들어 줍니다. 이 정책은 원래 AmazonSSManagedInstanceCore와 대략 동일하지만 ssm:getParameter(s)의 두가지의 정책은 허용되지 않았습니다.
만약 EC2 인스턴스에서 SSM Parameter Store에 대한 로드도 하고 싶은 경우 AmazonSSManagedInstanceCore기반으로 정책을 만드는것이 좋습니다.
SSMManagedEC2InstanceDefaultRole란 이름으로 만들겠습니다. 계속 Next를 눌러 만들어주고 만든 룰을 클릭하여 접속해줍니다.
SSMManagedEC2InstanceDefaultRole -> Trust relationships -> Edit trust policy를 눌러줍니다.
ec2.amazonaws.com -> ssm.amazonaws.com로 바꿔주고 Update policy를 눌러줍니다. 이제 DHMC설정을 하러 갑시다.
위 사진과 같이 IAM Role를 바꿔주고 Configure를 눌러주면 CDHM설정 끝입니다. 이제 EC2를 만들어줍니다.
EC2 생성이 profile은 설정하지 않아도 됩니다. 인스턴스 메타데이터 설정은 V1과 V2를 사용하게 설정해줍니다. 그리고 User-data에는 아래와 같은 코드를 넣어줍니다.
#!/bin/bash
cd /tmp
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent
IAM Role이 설정되지 않은 상태인 것을 확인할 수 있습니다.
DHMC가 활성화 된 경우 이 상태에서도 SSM Host manager가 관리 노드로 인식하게 됩니다.
그 후 Session Manager로 들어가서 Connect를 눌러주면 연결이 되는 것을 확인할 수 있습니다. 위에서 했던 것처럼 cli로 해도 됩니다.
yum info amazon-ssm-agent를 입력해 봤을 때 올바른 버전으로 뜨는 것을 확인할 수 있었습니다.
'기능반공부 > 클라우드 컴퓨팅' 카테고리의 다른 글
[CC] AWS SSM(Systems Manager) - Patch Manager (0) | 2023.03.06 |
---|---|
[CC] AWS SSM(Systems Manager) - Run Command (0) | 2023.03.06 |
[CC] AWS Cloud Service logs(AWS CloudWatch & AWS CloudTrail) (0) | 2023.02.22 |
[CC] AWS Organiztions & AWS IAM (0) | 2023.02.22 |
[CC] AWS EFS(Elastic File System) (0) | 2023.01.12 |