본문 바로가기
[AWS-SM]/SSM

[AWS] SSM을 이용한 리눅스 시스템 계정 추가 작업

by SAMSUNG Metaverse-Cloud 2024. 10. 28.
728x90

 

우리는 각 서버마다 사용자의 권한에 맞게 시스템 계정을 추가를 한다. 이 작업은 권한 및 보안 때문에 진행해야 하는 작업이다. 

서버가 몇 대 안될 경우에는 딱히 문제가 되지 않는다. 

하지만 시스템이 10대 20대 100대가 된다면 일일히 시스템 계정을 추가하는 작업은 매우 비효율적인 작업이 될 것이다. 

 

이를 해결하기 위해서는 여러가지 해결방안이 있다.

Ansible과 같은 언어를 사용하는 것도 방법이지만 이 글에서는 AWS에서 기본적으로 제공하는 SSM의 명령 실행 기능을 통해서 시스템 계정을 추가하는 작업을 진행할 것이다. 

 

## 전제조건

SSM은 AWS에서 제공하는 기능으로 각 서버마다 Agent의 설치가 필요하다. 

https://repost.aws/ko/knowledge-center/install-ssm-agent-ec2-linux

 

EC2 Linux 인스턴스에 Systems Manager Agent 설치

Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스에 AWS Systems Manager Agent(SSM Agent)를 설치하고 시작 전에 시작하도록 하고 싶습니다.

repost.aws

 

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."

 

728x90