MySQL 암호 교체 : 단일 사용자를 사용하여 다른 사용자 암호 변경
현재 AWS Aurora / MySQL 기반 애플리케이션에 대한 암호 교체 전략을 설정하는 중입니다.
내 계획은 이런 전략을 사용하는 것이었다 ...
- AWS SSM 암호화 파라미터에 저장된 애플리케이션 사용자 이름 / 암호.
- 애플리케이션 서버는 SSM에서 자격 증명 만 검색 할 수있는 액세스 권한이 있습니다. 환경에 의해 제한됨 (스테이징, 프로덕션 등)
- Lambda는 MySQL에서 암호를 변경하고 SSM에 새 값을 저장하기 위해 주기적으로 실행되도록 구성되었습니다. Lambda는 암호를 사용하는 대신 AWS IAM 역할을 사용하여 데이터베이스에 인증합니다.
마지막 부분은 제가 잘 모르는 부분입니다. 이 구성을 사용하려면 람다 역할 / 사용자에게 다른 모든 애플리케이션 사용자의 암호를 변경할 수있는 권한이 있어야합니다.
보안 관점에서이 작업을 수행하는 합리적인 방법입니까? lambda mysql 사용자는 암호가 아닌 IAM 역할을 사용하므로 권한이있는 역할에만 사용하도록 제한해야합니다.
대안은 람다가 로그인 할 특별한 db 사용자가 아니라 람다 함수가 SSM에서 각 사용자 자격 증명을 검색 한 다음 각 사용자로 로그인하여 암호를 변경하도록하는 것입니다.
어느 쪽이든 람다는 각 사용자에 대한 액세스 권한이 있어야합니다.
MySQL에서 "lambda_user"에 대한 액세스 권한을 신중하게 검색 할 수 있다고 가정 할 때 사용자가 다른 사용자의 암호를 변경할 수있는 권한을 갖는 것과 관련된 다른 눈에 띄는 문제가 있습니까?
또한 명확히하기 위해 이들은 이러한 자격 증명을 사용할 일반 인간 유형 사용자가 아니라 응용 프로그램 사용자입니다.
답변
이것은 당신이 설명하는 정확한 이유 때문에 그것을 수행하는 최선의 방법입니다. Lambda가 자격 증명 대신 인증 역할을 사용하도록함으로써 유지하는 비밀의 수를 최소화 할 수 있습니다. 이는 확실히 좋은 일입니다. 지적 할 가치가있는 것은 두 가지뿐입니다.
이제 CloudFormation을 사용하여이를위한 특수 목적 Lambda의 프로비저닝 및 배포를 자동화 할 수 있습니다. 결과적으로 비교적 쉽게이 작업을 수행 할 수 있습니다. 저는 개인적으로 CloudFormation의 열렬한 팬은 아니지만 어쨌든 여기에서 사용할 것입니다.
메타 데이터 V2 엔드 포인트로 전환하면 인프라에서 발견되는 SSRF와 다른 형태의 침입에서 추가 보안을 제공 할 수 있지만이 사용 사례에서는 그다지 관련이 없습니다.