내 API 키가 검색 결과에 나타나지 않도록 어떻게 보호합니까?

내 API 키가 검색 결과에 나타나지 않도록 어떻게 보호합니까?

소스 노드 : 2726143

질문: 내 API 키가 다른 사람의 GitHub 검색에 포함되지 않도록 하려면 어떻게 해야 합니까?

답변 : 잠재적인 보안 위험으로 인해 API 키를 코드에 직접 저장하는 것은 일반적으로 권장되지 않습니다. 코드가 공유되거나 공개적으로 액세스할 수 있게 되면 API 키를 보는 사람은 누구나 코드를 사용할 수 있으므로 악용 또는 보안 위반이 발생할 수 있습니다.

API 키를 안전하게 저장하는 방법에는 여러 가지가 있습니다.

  • 환경 변수: 머신의 환경 변수에 API 키를 저장한 다음 코드에서 이러한 변수에 액세스할 수 있습니다. 이 방법은 키를 코드 외부에 보관하는 이점이 있습니다(키는 코드가 실행되는 환경에 있음). 또한 로컬 컴퓨터, 개발 서버, 프로덕션 서버 등과 같은 환경에 따라 키가 다를 수 있음을 의미합니다.
  • 구성 파일: 코드 리포지토리에 포함되지 않은 별도의 구성 파일에 API 키를 저장할 수도 있습니다. 이 파일은 .gitignore 파일이 저장소에 커밋되지 않도록 합니다. 무단 액세스를 방지하려면 이 구성 파일에 적절한 파일 수준 권한을 추가해야 합니다. 코드에서 이 파일의 API 키를 읽습니다.
  • 비밀 관리 시스템: 더 큰 애플리케이션이나 더 민감한 데이터의 경우 비밀 관리 시스템. 이들은 API 키와 같은 비밀에 대한 액세스를 관리하는 데 도움이 되는 AWS Secrets Manager, HashiCorp의 Vault 및 Google의 Secret Manager와 같은 특수 도구입니다.
  • 환경별 구성 서비스: Heroku 및 Netlify와 같은 플랫폼에는 API 키를 저장하는 데 사용할 수 있는 환경 변수를 설정하기 위한 특정 기능 또는 서비스가 있습니다.
  • 암호화된 저장소: API 키를 데이터베이스나 다른 스토리지 시스템에 저장해야 하는 경우 암호화해야 합니다. 이렇게 하면 누군가가 스토리지 시스템에 대한 액세스 권한 확보, 암호화 키가 없으면 키를 사용할 수 없습니다.

보안 코딩에서 이러한 솔루션 중 가장 낮은 오버헤드인 처음 두 가지를 구현하는 방법을 살펴보겠습니다. 모든 언어가 유사한 개념을 가질지라도 Python을 예제 언어로 사용했습니다. Python의 장점은 단순성과 사용 용이성이며 강력한 데이터 처리 기능과 함께 대부분의 용도에 이상적입니다.

API 키 저장을 위해 환경 변수를 사용하려면

환경 변수를 사용하면 API 키와 같은 민감한 정보를 소스 코드 외부에 저장할 수 있습니다. 런타임 중에 애플리케이션에 액세스할 수 있으며 다양한 환경(예: 개발, 스테이징 및 프로덕션)에서 쉽게 구성할 수 있습니다.

먼저 애플리케이션이 실행 중인 시스템 또는 플랫폼에서 환경 변수를 설정합니다. Unix 기반 시스템에서는 다음을 사용하여 환경 변수를 설정할 수 있습니다. 수출 명령:

% 내보내기 API_KEY=

다음으로 애플리케이션 코드에서 환경 변수에 액세스합니다. 예를 들어 Python에서는 다음을 사용하여 환경 변수의 값에 액세스할 수 있습니다. os 기준 치수:

% python import os api_key = os.environ['API_KEY']

API 키 저장을 위해 외부 구성 파일을 사용하려면

초보 개발자 또는 데이터 과학자가 API 키를 저장하는 또 다른 방법은 외부 구성 파일을 이용하는 것입니다. 이는 매우 유용할 수 있습니다. 그러나 다음을 사용하여 리포지토리에서 제외해야 합니다. .gitignore 또는 동등한 것.

먼저 다음과 같은 구성 파일을 만듭니다. config.json, 그리고 여기에 API 키를 저장합니다.

json { "api_key": " " }

다음으로 구성 파일을 프로젝트의 .gitignore (또는 이에 상응하는) 버전 제어 시스템에서 추적하지 않도록 합니다.

마지막으로 애플리케이션 코드에 구성 파일을 로드하여 API 키에 액세스합니다. 예를 들어 Python에서는 다음과 같이 JSON 구성 파일을 로드하고 API 키에 액세스할 수 있습니다.

open('config.json') as f로 json 가져오기
구성 = 로드(에프) api_key = 구성['api_key']

API 잠금

환경 변수나 외부 구성 파일을 사용하면 우발적인 노출로부터 API 키 보호, 중요한 정보의 관리를 단순화하고 다양한 환경에 대해 서로 다른 구성을 보다 쉽게 ​​유지 관리할 수 있습니다. 무단 액세스를 방지하려면 환경 변수 및 구성 파일에 대한 적절한 액세스 제어를 적용해야 합니다.

프로젝트의 복잡성(및 중요성)이 증가함에 따라 민감한 항목을 저장하기 위한 비밀 관리 시스템 또는 환경별 구성 서비스와 같은 고유 기능이 있는 플랫폼으로 이동하는 것이 좋습니다. 그러나 이러한 빠른 솔루션은 보다 안전한 기반에서 시작할 수 있도록 도와줍니다.

타임 스탬프 :

더보기 어두운 독서