IT 서비스는 설정이 필요합니다. 설정의 일부는 노출되면 안 되는 비밀입니다. 일반적인 예로는 데이터베이스 자격 증명이나 세션 쿠키 또는 인증 자격 증명을 보호하는 무작위 값이 있습니다. 소프트웨어를 개발하는 경우, 빌드 파이프라인, 배포 인증서 및 액세스 키와 함께 문제가 더 악화되기 쉽습니다.
비밀이 유출되면 사용자 계정 탈취, 데이터 도난, 빌드 체인 공격 및 기타 비용이 많이 드는 문제를 초래할 수 있습니다. 나쁜 평판, 지적 재산의 손실 및 잠재적으로 큰 법적 비용은 발생 가능한 비용의 일부에 불과합니다.
Psono는 최신 버전의 psonoci로 보호된 환경을 제공합니다. 보호된 환경을 통해 프로세스를 실행하고 환경 변수를 통해 구성할 수 있으며, 시스템에 노출되지 않습니다. 이 환경 변수는 Psono에서 안전하게 로드되며 서버에 저장되지 않으며 단일 프로세스에만 노출됩니다.
먼저 환경 변수 비밀을 생성해야 합니다. 단일 비밀이 여러 환경 변수를 포함할 수 있으므로 환경별로 또는 함께 사용되는 데이터베이스 사용자와 데이터베이스 비밀번호와 같이 환경 변수를 그룹화할 수 있습니다.
그 후 새 환경 변수 비밀에 접근할 수 있도록 API 키를 생성합니다.
이제 시스템에 직접 노출되는 유일한 매개 변수인 API 키 비밀을 기록해 둡니다.
다음 명령어를 사용하여 서버 또는 빌드 파이프라인에 psono ci를 설치합니다:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
그리고 단순히 ./some_command
를 실행하는 대신 다음과 같이 프로세스를 생성합니다:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
간단하게 하기 위해 --api-key-id
나 --api-secret-key-hex
와 같은 매개 변수를 인수로 전달하지만 대신 구성 파일을 설정할 수도 있습니다.
데모 목적으로, 전달된 모든 환경 변수와 인수를 출력하는 작은 파이썬 스크립트 service.py
를 생성했습니다.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
예를 들어 ./service.py --whatever=argument_1
을 실행하는 대신 이렇게 실행할 수 있습니다:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./service.py --whatever=argument_1
다음과 같은 출력을 얻습니다:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
모든 인수가 제대로 전달되었고, 이전에 구성한 모든 환경 변수가 프로세스에 사용할 수 있는 것을 확인할 수 있습니다. 시스템 환경 변수를 함께 전달하고 Psono의 환경 변수로 확장할 수 있는 플래그도 있습니다. 자세한 정보는 psonoci 설명서에서 확인할 수 있습니다.
Psono가 인프라를 보호하는 데 어떻게 도움이 되는지 보여드리는 작은 설명을 즐기셨기를 바랍니다. 이 모든 것은 이 기능의 뇌인 Bernd 없이는 불가능했을 것입니다, 그래서 정말 감사합니다 Bernd!