우리는 각 서버마다 사용자의 권한에 맞게 시스템 계정을 추가를 한다. 이 작업은 권한 및 보안 때문에 진행해야 하는 작업이다.
서버가 몇 대 안될 경우에는 딱히 문제가 되지 않는다.
하지만 시스템이 10대 20대 100대가 된다면 일일히 시스템 계정을 추가하는 작업은 매우 비효율적인 작업이 될 것이다.
이를 해결하기 위해서는 여러가지 해결방안이 있다.
Ansible과 같은 언어를 사용하는 것도 방법이지만 이 글에서는 AWS에서 기본적으로 제공하는 SSM의 명령 실행 기능을 통해서 시스템 계정을 추가하는 작업을 진행할 것이다.
## 전제조건
SSM은 AWS에서 제공하는 기능으로 각 서버마다 Agent의 설치가 필요하다.
https://repost.aws/ko/knowledge-center/install-ssm-agent-ec2-linux
Agent의 설치 방법은 위에 나와있다.
SSM Agent는 서버를 생성할 시 추가해주거나 혹은 하나의 EC2에 선 세팅을 한 후 AMI를 떠서 다른 서버를 생성한다면 굳이 수동으로 여러번 설치 할 필요는 없다.
사용법
AWS Systems Manager -> 명령 실행 클릭
명령문서에 shell이라고 필터를 걸어준 후
AWS-RunShellScript 클릭하기
명령 파라미터에 밑에 위치한 스크립트 파일을 복사해 준 후 자신이 원하는 사용자 이름 및 비밀번호를 입력한다.
그 후 대상에서 AWS의 태그 기능을 통해서 한번에 배포를 해도 가능하며
수동으로 인스턴스 선택을 통해서 내가 명령을 실행하고자 하는 서버들을 지정하여 명령을 실행해주면 된다.
그리고 맨 밑으로 가서 실행을 눌러주면
이렇게 명령이 성공한 것을 확인할 수 있다.
해당 작업은 에이전트가 선 설치가 되어야 하는 불편함은 있지만 AWS를 사용한다면 Systems Manager를 사용할 일이 많기 때문에 미리 선작업 하는 것을 권장한다.
그게 아니라면 Ansible 같은 언어를 통해서 진행할 수 있는데 이는 추후에 다뤄보도록 하겠다.
스크립트
#!/bin/bash
# 사용자 이름 및 비밀번호
USER_NAME="username"
USER_PASSWORD="password"
# 동일한 이름의 그룹 생성
if sudo groupadd "$USER_NAME"; then
echo "Group '$USER_NAME' created successfully."
else
echo "Failed to create group '$USER_NAME'. It might already exist."
exit 1
fi
# 사용자 생성 및 그룹에 포함
if sudo useradd -m -s /bin/bash -g "$USER_NAME" "$USER_NAME"; then
echo "User '$USER_NAME' created and added to group '$USER_NAME'."
else
echo "Failed to create user '$USER_NAME'."
exit 1
fi
# 비밀번호 설정
echo "$USER_NAME:$USER_PASSWORD" | sudo chpasswd
# sudoers 파일에 사용자 추가 (비밀번호 없이 sudo 사용)
if echo "$USER_NAME ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/$USER_NAME > /dev/null; then
echo "Sudo privileges granted to user '$USER_NAME'."
else
echo "Failed to grant sudo privileges."
exit 1
fi
# sudoers 파일 권한 설정 (보안을 위해)
sudo chmod 440 /etc/sudoers.d/$USER_NAME
echo "User '$USER_NAME' and group '$USER_NAME' created successfully with sudo privileges."
'[AWS-SM] > SSM' 카테고리의 다른 글
[SSM] AWS 세션 매니저 지속 시간 조절하기 (0) | 2024.11.05 |
---|---|
[중요][AWS] 세션매니저 (Session Manager) 설치 (CentOS 8) (0) | 2023.02.23 |
[중요][AWS 강좌]EC2에 SSH로 연결하지 마세요 (AWS Session Manager) (0) | 2023.02.11 |