MinIO 최신 버전에서 사라진 버킷 정책 UI, 해결법

궁금하면 500원·2025년 5월 22일

데브옵스

목록 보기
35/36

Linux에서 MinIO 설치 및 설정

MinIO는 고성능의 오브젝트 스토리지 서버로, AWS S3와 호환되는 API를 제공합니다.
이 가이드는 Linux 환경에서 MinIO를 처음부터 설치하고 설정하는 전체 과정을 다룹니다.

1. MinIO 다운로드 및 설치

먼저 MinIO 바이너리 파일을 다운로드하고 시스템에 설치합니다.

# 바이너리 파일 다운로드
wget https://dl.min.io/server/minio/release/linux-amd64/minio

# MinIO에 실행 권한 설정
chmod +x minio

# MinIO를 `/usr/local/bin`으로 이동
# /usr/local/bin/: 시스템 전역에서 사용할 수 있는 실행 파일을 저장하는 디렉토리
sudo mv minio /usr/local/bin/

# MinIO 데이터 저장 경로 설정
# /mnt/: 외부 저장장치나 하드디스크를 마운트하는 데 사용되는 디렉토리
# 시스템 파일과 데이터가 섞이지 않도록 보장
sudo mkdir -p /mnt/minio_data

2. MinIO 전용 사용자 생성

목적: MinIO 실행 시 root 사용자를 사용하지 않도록 전용 사용자를 생성합니다.

보안상 중요한 이유

  • MinIO가 root 권한으로 실행되면 시스템의 모든 파일과 리소스에 접근 가능
  • 공격자가 MinIO를 통해 침입할 경우, root 사용자를 통해 전체 시스템을 완전히 제어할 수 있음
# minio 사용자 생성
# `-r`: 시스템 사용자 생성 (서비스나 데몬 프로세스 실행용)
# `-s /bin/false`: 사용자의 shell을 `/bin/false`로 설정하여 직접 로그인 불가
# 보안성을 높이고 특정 서비스만 실행하도록 제한
sudo useradd -r -s /bin/false minio

# MinIO 데이터 저장 디렉토리의 소유권을 minio 사용자에게 부여
# minio 사용자가 해당 디렉토리의 데이터를 읽고 쓸 수 있도록 보장
sudo chown -R minio:minio /mnt/minio_data

3. MinIO 서비스 시작

Linux에서 MinIO를 시작하는 방법은 두 가지가 있습니다.

  • 수동 시작: 직접 명령어로 실행
  • 자동 시작: systemd 서비스로 관리 (권장)

수동 시작 방법

bashminio server /mnt/minio_data --console-address ":9001"

자동 시작 방법 (systemd 서비스 사용)

systemd 서비스 파일 생성

/etc/systemd/system/minio.service 파일을 생성합니다.

bashsudo vi /etc/systemd/system/minio.service

minio.service 파일 내용

[Unit]
Description=MinIO Object Storage
After=network.target

[Service]
Type=simple
User=minio
Environment="MINIO_MEMORY_LIMIT=128M"
ExecStart=/usr/local/bin/minio server /mnt/minio_data \
  --address ":9000" \
  --console-address ":9001" \
  --quiet
Environment="MINIO_ROOT_USER=admin"
Environment="MINIO_ROOT_PASSWORD=YourStrongPassword123!"

Restart=always
LimitNOFILE=65536
MemoryLimit=128M

[Install]
WantedBy=multi-user.target

minio.service 설정 항목 상세 설명

[Unit] 섹션

  • Description: 서비스에 대한 간략한 설명
  • After=network.target: 네트워크 시작 후 MinIO 서비스가 시작되도록 설정.
    네트워크가 완전히 준비되지 않았을 때 MinIO가 시작되는 것을 방지

[Service] 섹션

  • Type=simple: ExecStart 명령이 완료될 때까지 서비스를 단순 프로세스로 간주.
    포그라운드에서 실행되고 종료되지 않는 MinIO에 적합
  • User=minio: MinIO가 minio 사용자로 시작. 보안상 권장되는 설정
  • Environment="MINIO_MEMORY_LIMIT=128M": 메모리 사용량 제한
  • ExecStart: MinIO를 시작하는 명령어 지정
    • --address ":9000": MinIO가 포트 9000에서 오브젝트 스토리지 서비스 제공
    • --console-address ":9001": 웹 콘솔 인터페이스를 포트 9001에서 실행
    • --quiet: 시작 시 상세한 로그를 출력하지 않음
  • Environment="MINIO_ROOT_USER=admin": MinIO 관리자 사용자명 설정
  • Environment="MINIO_ROOT_PASSWORD=YourStrongPassword123!": MinIO 관리자 비밀번호 설정
  • Restart=always: MinIO가 충돌하거나 실행을 멈추면 자동으로 다시 시작
  • LimitNOFILE=65536: 프로세스당 파일 디스크립터 수를 65536으로 제한. 높은 동시성 서비스에서 중요한 설정
  • MemoryLimit=128M: 메모리 사용량을 128MB로 제한

[Install] 섹션

  • WantedBy=multi-user.target: 시스템 부팅 시 MinIO 서비스가 자동으로 시작
# systemd 설정 다시 로드
sudo systemctl daemon-reload

# MinIO 서비스 시작
sudo systemctl start minio

# 부팅 시 자동 시작 설정
sudo systemctl enable minio

# 서비스 상태 확인
sudo systemctl status minio

성공적으로 시작되면 다음과 같은 출력을 볼 수 있습니다.

● minio.service - MinIO Object Storage
     Loaded: loaded (/etc/systemd/system/minio.service; enabled; preset: disabled)
     Active: active (running) since Fri 2025-05-30 11:04:01 CST; 11s ago
   Main PID: 2651761 (minio)
      Tasks: 8 (limit: 2010)
     Memory: 127.8M (limit: 128.0M peak: 128.0M swap: 167.1M swap peak: 167.3M)
        CPU: 1.201s
     CGroup: /system.slice/minio.service
             └─2651761 /usr/local/bin/minio server /mnt/minio_data --address :9000 --console-address :9001 --quiet

4. 접속 및 방화벽 설정

MinIO 웹 콘솔에 접속하려면 브라우저에서 http://서버주소:9001로 접속하세요.
중요: 방화벽에서 포트 9000(API)과 9001(웹 콘솔) 접근 권한을 허용해야 합니다.

# Ubuntu/Debian의 경우 (UFW 사용)
sudo ufw allow 9000
sudo ufw allow 9001

# CentOS/RHEL의 경우 (firewalld 사용)
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --add-port=9001/tcp
sudo firewall-cmd --reload

5. MinIO 클라이언트 설치 및 설정

MinIO 클라이언트(mc)를 사용하면 명령줄에서 MinIO를 더 효율적으로 관리할 수 있습니다.

MinIO 클라이언트 설치

# mc 클라이언트 다운로드
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc

# 실행 권한 설정
chmod +x /usr/local/bin/mc

접속 별칭 구성

# 로컬 MinIO 서버에 대한 별칭 설정
mc alias set myminio http://localhost:9000 admin YourStrongPassword123!

# 연결 테스트
mc ls myminio

버킷 생성 및 관리

# 새 버킷 생성
mc mb myminio/my-bucket

# 버킷 목록 확인
mc ls myminio

# 파일 업로드
mc cp /path/to/file.txt myminio/my-bucket/

# 파일 다운로드
mc cp myminio/my-bucket/file.txt /local/path/

6. 버킷 정책 설정

버킷의 접근 권한을 설정하여 웹에서의 접근을 제어할 수 있습니다.

기본 정책 설정

# 버킷을 공개 읽기 전용으로 설정 (다운로드만 허용)
mc anonymous set download myminio/버킷이름

# 예시: user-uploads 버킷을 공개 읽기 전용으로 설정
mc anonymous set download myminio/user-uploads

권한 레벨 설명

명령어설명사용 사례
mc anonymous set none비공개 버킷 (기본값)민감한 데이터 저장
mc anonymous set download다운로드만 허용이미지, 문서 등 공개 파일
mc anonymous set upload업로드 허용임시 파일 업로드 (주의 필요)
mc anonymous set public공개 읽기/쓰기매우 신중하게 사용
  • 권장 설정: 프런트엔드에서 http://서버주소:9000/버킷이름/파일명.jpg 형태로 접근할 수 있도록 download 권한을 사용하고, 백엔드에서는 Access Key와 Secret Key 인증을 통해 읽기 및 업로드 작업을 수행하는 것이 좋습니다.

7. 보안 강화 및 모니터링

SSL/TLS 설정 (선택사항)

프로덕션 환경에서는 HTTPS를 사용하는 것이 좋습니다.

# 인증서 디렉토리 생성
sudo mkdir -p /etc/minio/certs

# 인증서 파일을 해당 디렉토리에 복사
sudo cp your-certificate.crt /etc/minio/certs/public.crt
sudo cp your-private-key.key /etc/minio/certs/private.key

# 인증서 파일 권한 설정
sudo chown -R minio:minio /etc/minio/certs
sudo chmod 600 /etc/minio/certs/private.key

로그 모니터링

# MinIO 서비스 로그 확인
sudo journalctl -u minio -f

# 최근 로그 확인
sudo journalctl -u minio --since "1 hour ago"

디스크 사용량 모니터링

# MinIO 데이터 디렉토리 사용량 확인
du -sh /mnt/minio_data

# 시스템 전체 디스크 사용량 확인
df -h

8. 백업 및 유지보수

데이터 백업

# mc를 사용한 백업
mc mirror myminio/source-bucket /backup/location/

# rsync를 사용한 물리적 백업
sudo rsync -av /mnt/minio_data/ /backup/minio_data/

서비스 관리 명령어

# 서비스 재시작
sudo systemctl restart minio

# 서비스 중지
sudo systemctl stop minio

# 서비스 상태 확인
sudo systemctl status minio

# 부팅 시 자동 시작 비활성화
sudo systemctl disable minio

마무리

이제 MinIO가 성공적으로 설치되고 설정되었습니다.
웹 브라우저에서 http://서버주소:9001로 접속하여 MinIO 콘솔을 사용할 수 있습니다.

다음 단계


1. 애플리케이션에서 MinIO S3 API 연동
2. 정기적인 백업 스케줄 설정
3. 모니터링 및 알림 시스템 구축
4. 필요에 따라 클러스터 구성 고려

MinIO는 높은 성능과 확장성을 제공하는 오브젝트 스토리지 솔루션으로, 적절한 설정과 관리를 통해 안정적인 서비스를 제공할 수 있습니다

profile
에러가 나도 괜찮아 — 그건 내가 배우고 있다는 증거야.

0개의 댓글