프로덕션 환경에서 PM2의 보안 설정

작성일 :

프로덕션 환경에서 PM2의 보안 설정

PM2는 Node.js 애플리케이션을 쉽게 관리하기 위한 프로세스 매니저로, 그 안정성과 편리함 덕분에 많은 개발자들에게 사랑받고 있습니다. 하지만 프로덕션 환경에서 안전하게 운영하려면 몇 가지 중요한 보안 설정을 고려해야 합니다. 이 글에서는 PM2를 좀 더 안전하게 사용하는 방법에 대해 다룹니다.

PM2의 기본 설정 점검

PM2를 설치한 후 기본 설정을 점검하는 것부터 시작합니다. 다음 명령어로 PM2 설정을 확인할 수 있습니다.

bash
pm2 show <app_name>

이 명령어는 설치된 애플리케이션에 대한 세부 정보를 보여줍니다. 기본 설정이 적절하게 구성되어 있는지 확인합니다. 특별히 주의해야 할 부분은 로그 파일 위치, 애플리케이션 실행 권한, 리스타트 정책 등입니다.

파일 및 디렉토리 권한 설정

프로덕션 환경에서는 파일 및 디렉토리 권한 설정이 매우 중요합니다. PM2와 관련된 모든 설정 파일과 로그 파일에 적절한 권한을 부여해야 합니다. 예를 들어, 설정 파일은 관리자만 쓰기 권한을 가질 수 있도록 설정해야 합니다.

bash
chmod 600 /path/to/your/config/file
chown root:root /path/to/your/config/file

위의 명령어는 설정 파일에 모든 사용자에 대한 읽기 및 쓰기 권한을 제거하고, 오직 관리자(root)만이 접근할 수 있도록 설정합니다.

PM2의 로그 관리

로그 파일은 보안상 매우 민감한 정보를 포함할 수 있으므로 적절하게 관리해야 합니다. 로그 파일의 크기를 제한하고, 주기적으로 백업 및 삭제하는 정책을 설정합니다. PM2는 기본적으로 logrotate 옵션을 제공하여 로그 관리에 도움을 줍니다.

다음은 logrotate 설정 예입니다.

json
{
  "apps": [
    {
      "name": "your_app",
      "script": "app.js",
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "error_file": "/var/log/your_app/error.log",
      "out_file": "/var/log/your_app/out.log",
      "merge_logs": true,
      "log_file": "/var/log/your_app/combined.outerr.log",
      "instances": 1,
      "autorestart": true,
      "watch": false,
      "max_memory_restart": "1G",
      "env": {
        "NODE_ENV": "production"
      }
    }
  ]
}

이 설정은 로그 파일을 날짜별로 구분하여 저장하고, 파일 크기를 제한합니다.

환경 변수 보호

프로덕션 환경에서 환경 변수를 보호하는 것도 중요한 보안 설정 중 하나입니다. PM2는 .env 파일을 사용하는 것을 권장하지만, 이 파일은 절대 코드 저장소에 포함하지 말아야 합니다. dotenv 패키지를 통해 환경 변수를 로드할 수 있습니다.

설치 방법은 다음과 같습니다.

bash
npm install dotenv

그리고 애플리케이션 코드 상에서 다음과 같이 사용할 수 있습니다.

javascript
require('dotenv').config();
console.log(process.env.DB_HOST);

이렇게 하면 .env 파일에 정의된 환경 변수들을 코드에서 사용할 수 있지만, 파일 자체는 안전하게 보호할 수 있습니다.

PM2 모니터링

모니터링은 프로덕션 환경에서 애플리케이션의 상태를 지속적으로 확인하기 위한 중요한 요소입니다. PM2는 기본적으로 모니터링 기능을 제공하지만, 더 강력한 보안을 위해 추가적인 모니터링 도구와 연동하는 것이 좋습니다. 예를 들어, Keymetrics를 사용하면 PM2 애플리케이션의 성능, 에러, 트래픽 등을 실시간으로 모니터링할 수 있습니다.

비밀번호 보호

PM2 자체에는 비밀번호 보호 기능이 없지만, 서버에 접근하는 모든 사용자에 대해 강력한 비밀번호 정책을 시행하고, SSH 접속을 위해 공개키 인증을 설정해야 합니다. 이를 통해 서버에 무단으로 접근하는 것을 방지할 수 있습니다.

결론

프로덕션 환경에서 PM2를 안전하게 운영하기 위해서는 다양한 보안 설정을 준수해야 합니다. 파일 및 디렉토리 권한 설정, 로그 관리, 환경 변수 보호, 모니터링 등의 방법을 통해 애플리케이션을 보호할 수 있습니다. 이러한 설정을 통해 더욱 안전하고 안정적인 PM2 환경을 구축하시기 바랍니다.