2016-12-09 3 views
0

일반적으로 일부 API를 사용하여 MySQL에 연결하면 (예 : Linux의 Python에서) 암호를 connect() 함수의 인수로 제공해야합니다. 그러나 코드를 공유하거나 프로젝트 저장소의 어느 곳에 나 암호를 저장하고 싶지는 않습니다. 공유 할 것이기 때문입니다. 또한 명령 행 인자로 전달하기를 원하지 않습니다. 왜냐하면 첫째, 프로세스 관리자에서 볼 수 있기 때문입니다. 둘째, 스크립트를 시작할 때마다 입력하지 않기 때문입니다. 또한 작은 스크립트마다 프로그램 별 설정 파일을 원하지 않습니다.Python으로 MySQL에 연결하십시오 : 안전한 방법?

다음 해결책을 생각해 냈습니다. 로컬 ~/my.cnf 파일 (예 : configparser)을 구문 분석하고 거기에서 기본 설정을 가져옵니다. 그러나 여러 개의 호스트로 작업하려면 불필요한 "그룹 접미사"를 사용하여 구문 분석을 수행해야합니다.

내 질문은 : 안전하게 사용할 수있는 다양한 스크립트/프로그램 쌍 (호스트, 사용자)에 대한 기본 암호를 저장하는 표준 방법은 무엇입니까?

편집 : 나는 duplicate을 찾았지만, 여전히 암호에 암호를 저장하고 있기 때문에 거기에 대한 대답에 만족하지 않습니다.

+3

항상 이런 식으로 환경 변수를 사용하십시오. [12 Factor apps] (https://12factor.net/config)를 참조하십시오. –

+0

모두와 공유하는 것에 신경 쓰지 않는 다른 계정을 설정할 수도 있습니다. – Navidad20

+0

모든 "작은"스크립트 중에서 재사용되는 구성 파일을 만드는 것만 큼 만성적 인 이유는 무엇입니까? 로컬 my.cnf 파일을 구문 분석하는 것은 응용 프로그램에 해당 파일에 대한 액세스 권한을 제공해야하므로 안전하지 않을 수 있습니다. – eandersson

답변

0

암호없이 사용자를 생성하지 않으면 암호없이 데이터베이스에 연결할 수 있다고 생각하지 않습니다. github 또는 다른 저장소 시스템에있는 프로젝트에는 저장소에 포함 된 dist 파일과 무시할 실제 구성 파일을 포함하는 것이 매우 일반적이며 안전합니다. 이런 식으로 뭔가 :

config/ 
    - settings.dist.py 
    - settings.py 

당신이 당신의 데이터베이스 자격 증명 또는 응용 프로그램 별 설정을 볼 수있는 곳 settings.py를로드 시스템. 이 파일은 무시되므로 저장소에 저장되지 않습니다. 저장소에는 로컬 개발 환경에 대한 기본 자격 증명이있는 settings.dist.py 만 있으므로 프로젝트에 참여할 사람은 누구나 자신의 자격 증명을 사용합니다. 생방송으로 모든 사람에게 접근해서는 안됩니다.

git add settings.dist.py 
echo "settings.py" >> .gitignore 
git commit -m 'yout message' 
git push origin branch_name 
관련 문제