도플러: 미국의 승리와 비극.환경 파일

5712 단어 securitydotenvdoppler
.env 파일은 여전히 광범위하게 사용되고 원본 코드에 기밀을 저장하는 것이 개선되었지만 보안 위험과 개발자의 생산성에 미친 영향은 이제야 완전히 깨달았다.
비밀관리의 다음 진화를 추진한 것이 무엇인지 이해하기 위해 환경 변수의 역사와 원인을 먼저 살펴보자.env 파일은 이론적으로 좋은 생각이지만 해결된 문제보다 더 많은 문제가 발생한다.

하드코딩 비밀에서 환경 변수로


Twelve-Factor App 방법은 응용 프로그램의 개발과 배치를 정의하는 현대 최고의 실천에 도움이 된다.가장 중요한 '요소' 는 environment variables 불러온 동적 값으로 원본 코드의 하드코딩 설정과 기밀을 바꾸는 것이라고 할 수 있다.
환경 변수를 사용하는 것은 안전성에 있어서 커다란 승리이다. 예전처럼 코드에 접근할 권리가 있는 사람은 누구나 이런 비밀을 볼 수 있다.모든 운영체제와 프로그래밍 언어는 환경 변수를 지원하기 때문에 특수 코드나 제3자 라이브러리로 접근할 필요가 없다.

"A litmus test for whether an app has all config correctly factored out of the code is whether the codebase could be made open source at any moment, without compromising any credentials." - Twelve-Factor App III - Config


또한 설정은 현재 동적으로 제공되기 때문에 응용 프로그램은 로컬 개발에서 생산에 이르기까지 어떠한 환경에서도 실행할 수 있으며 코드를 변경할 필요가 없다.
환경 변수를 사용하는 안전성과 배치의 장점은 뻔하지만 환경 간에 어떻게 환경 변수를 관리, 창설, 갱신, 삭제와 동기화할 수 있습니까?누가 그것들을 관리하는 것을 책임질 것입니까?만약 응용 프로그램이 잘못 설정된다면, 진실의 출처는 무엇입니까?
환경 변수 관리의 역사를 깊이 이해하고 어떻게 관리하는지 이해합시다.env 파일에서 이 질문에 대답하려고 합니다.

어때?env 파일 탄생


12 요소 응용 프로그램은 처음에 Heroku의 개발자가 2012년에 초안을 잡았는데 그들은 응용 프로그램 계기판에 Config Vars라는 기능을 구축했다.그리고 배치하는 동안 이 키/값을 환경 변수로 주입하여 Heroku가 지원하는 모든 언어에서 사용할 수 있도록 합니다.

이것은 환경 변수가 app config와 secrets의 이상적인 교부 형식으로 간단명료한 편집 사용자 인터페이스를 가지고 있음을 증명한다.히로쿠는 구성 변수가 바뀔 때마다 자동으로 애플리케이션을 다시 로드하는 기능까지 추가했다.
그래서 Heroku는 이미 그들의 고객을 위해 이 문제를 해결했지만 다른 많은 호스트 공급자와 플랫폼은?
Shell 스크립트를 작성하여 응용 프로그램이 실행되기 전의 배치 과정에서 응용 프로그램의 환경 변수를 설정할 수 있지만, 이러한 방법은 응용 프로그램과 플랫폼에 특정되어 있으며, Linux와 Windows는 서로 다른 Shell 문법을 필요로 한다.
저기 있다.환경 서류가 들어왔다.키/값이 맞는 순수한 텍스트 파일입니다. 실제로는 변수를 정의하는 유효한 Linux 셸 문법일 뿐입니다.
DATABASE_URL=postgres://user:[email protected]:5432/app_db
AUTH_API_KEY=adb54299-f8dc-4726-bd3f-9fe2726bfd7a
이 간단한 형식 (유효한 Linux 셸 문법으로 제한) 이 활성화되었습니다.모든 주요 프로그래밍 언어(예를 들어 Python dotenvNode dotenv.를 위한 env(dotenv) 파일 분석 라이브러리
그리고 프로그램은dotenv 라이브러리로 해석합니다.env 파일로 프로그램이 시작되기 전에 이 프로그래밍 언어의 환경 변수 대상을 자동으로 채웁니다.
이거.env 파일 형식이 모든 것을 가지고 있는 것 같습니다!
이것은 문법, 패키지, 크로스플랫폼 해결 방안을 제공합니다. 개념 모델은 Heroku의 Config Vars와 유사하며 서버의 순수한 텍스트 파일에만 있습니다.개원 지역사회 덕분에 모든 주요 언어의 Dotenv 패키지는 손쉽게 구할 수 있게 되었다.
의 용법.env 파일은 모든 언어와 프레임워크에서 환경 변수를 응용 프로그램 설정과 기밀에 사용할 수 있도록 합니다.이것은 마치 완벽한 해결 방안인 것 같다.
불행히도env 파일은 일련의 새로운 안전성과 개발자의 생산력 문제를 가져왔고 최근에야 널리 선전되기 시작했다.
이제 원인을 탐구해 봅시다.env 파일은 우리가 원하는 은탄이 아닙니다.

문제는환경 파일


비록 하드코딩의 비밀은 발전했지만, 점점 더 많은 안전 위험과 수동 관리와 관련된 문제가 증가하고 있다.서로 다른 환경과 클라우드 공급자의 env 파일이 공사 지도자의 주의를 끌었다.
다음은 팀이 사용할 때 직면하는 도전의 예이다.환경 파일:
  • 에서 암호화되지 않은 비밀을 공유합니다.새 기밀을 추가하거나 변경할 때, 기밀이 권한을 부여받지 않은 사용자에게 노출되면, env 파일이 지나치게 느슨해져 최소 특권 원칙을 위반합니다.
  • 업데이트가 필요한 경우 로컬 개발 환경이 중단됩니다.env 파일이 주동적으로 전달되지 않았습니다. 예를 들어 통합 요청 후 새로운 비밀이 필요합니다.
  • 인공 관리 중의 인위적인 요소.크로스 환경과 서로 다른 클라우드 공급자의 env 파일은 입력 오류와 설정 오류를 초래하여 생산 안정성에 위험을 초래하기 쉽다.
  • 언어와 플랫폼 사이의 일치하지 않는 환경 변수 문법은 문제를 일으키기 쉽다. 예를 들어 Docker와 GitHub은 값을 인용하지 않고 Python과 Node는 값을 인용하지 않는다.js dotenv 패키지는 따옴표가 있거나 없는 값을 사용합니다.이 문제가 이렇게 보편적이어서 많은 단체들이 어쩔 수 없이 .env file linter를 채택하여 이런 문법 문제를 해결해야 한다.
  • As.vv 파일은 순수한 텍스트 형식으로 저장되며 (메모리의 환경 변수뿐만 아니라) 권한이 부여되지 않은 사용자가 읽을 위험이 있고, 방문과 변경에 대해 감사 추적이 없습니다.
  • 공공 웹 루트 폴더와 bots scanning the web for accidentally exposed .env files 에는 일정한 S3 buckets 흐름이 있는 것은 말할 것도 없다.
    잘 알고 있습니다.env 파일은 응용 프로그램 안전에 심각한 영향을 미치지만 개발 속도에 미치는 영향은 어떻습니까?
    수공 관리가 가져온 지속적인 전지.대부분의 팀에 대해 말하자면, env 파일은 이미 매우 규범화되어 더 이상 문제로 간주되지 않는다.단지 현대 응용 프로그램 개발과 관련된 주어진 실천 비용일 뿐이다.
    관리 비용을 계량화할 수 없는 팀.만약 집중식 기밀 관리자를 사용하여 환경을 뛰어넘어 기밀을 자동으로 동기화한다면, env 파일은 귀중한 시간과 돈을 잃게 될 것이며, 이러한 시간과 돈은 본래 절약할 수 있을 것이다.
    끊기다env 파일과 관련된 문제도 중대하고 계량화하기 어려운 비용을 가져올 수 있다. 왜냐하면 개발자가 절차나 깊이 있는 작업 상태에서의 집중도를 깨뜨리기 때문이다.가령 연구에서 추산한 anaverage of 23 minutes is lost per serious interruption이 정확하다고 가정하면 시간과 동량은 다음과 같은 원인으로 인해 손실될 수 있다.env 파일과 관련된 중단이 이전에 생각했던 것보다 더 심각합니다.
    높은 성과를 거둔 팀은 기술에 의존하는 진정한 원가를 의식하기 시작했다.프로그램 설정과 기밀을 관리하는 데 사용되는 env 파일입니다.
    그들은 모든 클라우드, 플랫폼과 위탁 관리 환경의 환경 변수 관리에 자동화를 가져오기 위한 새로운 비밀 관리 플랫폼을 찾고 있다.

    우리는 환경 변수의 비밀 관리자가 필요하다


    우리는 영원히 있다.환경 변수를 응용 프로그램 설정과 기밀을 주류에 도입해 주셔서 감사합니다.이것은 간단명료한 해결 방안으로 하드코딩의 비밀을 원본 코드에서 모든 언어에 적용되는 통용 형식으로 어떻게 옮기는가의 긴박한 문제를 해결했다.
    과거에는 도움이 됐을 수도 있지만 이제는 심각한 결점을 인정할 때가 됐다.env 파일, 다음 진화를 맞이하기 위해 기밀 관리자를 사용하여 기밀에 집중적이고 안전한 저장을 제공합니다.
    이것이 바로 우리가 도플러를 건설해서 제거한 이유다.env 파일은 모든 클라우드 공급자와 플랫폼과 함께 사용하는 환경 변수를 관리하는 계기판을 제공합니다.
    어떻게 복용하는지 보기Doppler from start to production in just 4 minutes.

    좋은 웹페이지 즐겨찾기