자동 배포 중에 비밀번호를 처리하는 방법은 무엇입니까?

자동 배포 중에 비밀번호를 처리하는 방법은 무엇입니까?

책임 있는 관리자로서 우리는 다음과 같은 일반적인 약점을 알고 있습니다.

하지만 실제로는 이를 어떻게 처리해야 할까요?

물론 SSH를 통한 비밀번호 없는 인증과 sudo와 같은 도구를 사용하면 중요한 장소에 저장된 로그인 자격 증명을 제거할 수 있으며 이는 Linux 서버의 자동화된 배포 중에 실제로 도움이 됩니다.

그러나 운영 체제를 종료하고 애플리케이션을 설치하자마자 비밀번호를 안전하게 저장할 수 있는 문제에 직면할 가능성이 높습니다.

예를 들어 데이터베이스 서버를 설치하는 경우 웹 애플리케이션의 구성 파일에 일반 텍스트 비밀번호를 저장해야 할 가능성이 높습니다.

그런 다음 관리자만 자격 증명을 볼 수 있도록 구성 파일을 보호해야 하며, 가능한 보안 영향을 제한하기 위해 데이터베이스 사용자의 액세스 권한을 제한해야 합니다.

그러나 예를 들어 주요 관리 데이터베이스 계정을 처리하는 방법은 무엇입니까? 최소한 귀하의 DBA는 이를 알고 있어야 하며(따라서 일반 텍스트가 필요한 곳이 필요함) OS 관리자로서 귀하는 이를 알아야 합니다.~ 아니다자격 증명을 알고 있습니다. 또는 배포가 DevOps에 의해 수행되는데 그들은 이를 알아야 합니다.어느프로덕션 서버의 자격 증명.

가능한 해결책

이 문제를 오랜 시간 동안 고민한 끝에 세 가지 가능한 해결책을 생각해 냈지만 그 해결책에도 약점이 있었습니다.

  1. 배포 중에 임의의 자격 증명을 생성하고 이를 한 번 쓰기 방식으로 데이터베이스에 저장합니다. 예를 들어 dbas에는 데이터베이스 자격 증명만 읽을 수 있는 다른 사용자가 있습니다. 하지만 웹앱 등의 구성 파일에서 일반 텍스트 비밀번호를 처리하는 방법은 무엇입니까? 루트 사용자는 이를 읽을 수 있습니다. 또한 비밀번호 데이터베이스의 루트 사용자는 다음을 읽을 수 있습니다.모두비밀번호 자격 증명.

  2. 배포 중에 일반 텍스트 비밀번호와 기본 자격 증명을 수락하고 변경되는 포스트스크립트를 추가하세요.모든 것비밀번호. 승인된 사람들이 스크립트 실행 중에 자격 증명을 입력해야 하는 대화형일 수도 있습니다.

  3. 신뢰할 수 있는 제3자의 키를 사용하여 비밀번호를 비대칭으로 암호화합니다. 비밀번호를 요청하면이어야 한다이후에 바뀌었습니다.

어떻게 생각하나요? 여기에 모범 사례가 있습니까?

답변1

  1. 모든 자격 증명이 포함된 안전하고 암호화된 데이터베이스가 있어야 합니다.
  2. 배포 중에는 방화벽으로 인해 외부에서 서버에 완전히 접근할 수 없어야 합니다.
  3. 스크립트가 임의의 패스를 생성하여 이메일로 보내도록 하는 것은 괜찮습니다.
  4. 서버가 프로비저닝된 후 공개 액세스를 허용하기 전에 해당 비밀번호를 변경하는 것도 괜찮습니다.
  5. 비밀번호가 내부 메일 서버를 사용하고 SMTP를 통해 공개적으로 라우팅되지 않는 한 자신에게 비밀번호를 이메일로 보내는 것은 괜찮습니다(SMTPS는 다른 이야기입니다).

거의 모든 프로토콜을 이메일로 대체할 수 있습니다. 어딘가에 비밀번호를 SFTP로 보낼 수도 있고, onetimesecret API를 사용하여 일회성 메시지를 만들 수도 있고, https를 사용하여 비공개 요점에 업로드할 수도 있고, 기타 생각할 수 있는 모든 것이 가능합니다.

나는 그것이 그것을 덮는다고 생각합니다.

관련 정보