웹사이트

사이트를 위한 앱 시크릿 저장하기

The Secrets tab is an encrypted store for the sensitive configuration values a Node.js app needs, such as API keys, signing secrets and third-party tokens, kept per environment so your production…

사이트의 앱 시크릿 저장

Secrets 탭은 Node.js 앱이 필요로 하는 API 키, 서명 시크릿, 타사 토큰 등의 민감한 구성 값을 위한 암호화된 저장소이며, 환경별로 유지되어 프로덕션 자격증명과 미리보기 자격증명이 섞이지 않습니다.

시크릿이 위치한 곳

Websites를 열고, 사이트를 클릭한 다음, 사이트 탭 스트립의 Advanced 메뉴를 열고 Secrets를 선택합니다. 탭의 제목은 Secrets입니다.

이 탭은 Node.js 사이트에만 표시됩니다. WordPress, PHP 및 정적 사이트는 구성이 디스크의 파일에 있기 때문에 표시되지 않습니다: WordPress의 경우 wp-config.php, 그리고 일반 PHP 앱의 경우 프레임워크가 읽는 모든 것.

KPanel의 Node.js 사이트를 위한 Secrets 탭

값이 보호되는 방식

모든 값은 데이터베이스에 도달하기 전에 암호화됩니다. 어떤 것도 읽을 수 있는 텍스트로 저장되지 않으며, 목록 보기는 전체 값을 표시하지 않습니다: 마지막 네 자리 문자만 표시되는 마스크를 표시하므로, 두 개의 유사한 키를 노출하지 않고 구별할 수 있습니다.

각 행에는 그 상기를 위해 Encrypted 배지가 있습니다. 값을 다시 읽는 것은 단순히 페이지를 열기만 해서 일어나는 일이 아니라 별도의 의도적인 작업입니다.

시크릿 설정, 공개 및 삭제는 모두 sites:write 권한이 필요합니다. 읽기 전용 팀 멤버는 어떤 키가 존재하는지 그리고 그들의 마스크는 볼 수 있지만, 그들의 값은 볼 수 없습니다.

두 가지 환경

페이지 맨 위의 분할 컨트롤은 productionpreview 사이를 전환합니다. 이들은 완전히 별개의 키 집합입니다. 프로덕션에서 STRIPE_SECRET_KEY를 설정하면 미리보기에서 생성되지 않으며, 미리보기에서 삭제하면 프로덕션에 영향을 주지 않습니다.

그 분리가 이 기능의 목적입니다. 미리보기 빌드는 리포지토리 액세스 권한이 있는 누구나 트리거할 수 있는 일회용 환경이므로, 라이브 자격증명이 아닌 테스트 자격증명을 포함해야 합니다. 미리보기 환경이 생성되는 방식에 대해서는 Preview Deploys For Pull Requests를 참조합니다.

시크릿 추가 또는 업데이트

  1. 분할 컨트롤로 환경을 선택합니다.
  2. KEY_NAME 필드에 이름을 입력합니다. 필드는 입력할 때 대문자를 강제합니다.
  3. 두 번째 필드에 값을 넣습니다. 입력할 때 마스크됩니다.
  4. Set을 클릭합니다.

이미 존재하는 키를 설정하면 덮어씁니다. 별도의 편집 작업과 덮어쓰기에 대한 확인 단계는 없으므로, Set을 클릭하기 전에 환경 탭을 확인하세요.

키 이름 규칙

키는 대문자로 시작해야 하며, 그 다음 대문자, 숫자 및 밑줄을 포함할 수 있고, 최대 128자입니다. DATABASE_URL, API_KEY_V2SENTRY_DSN은 모두 유효합니다. 그 외의 것은 Key must be UPPER_SNAKE_CASE letters/numbers/underscore 메시지와 함께 거부됩니다.

알아두면 좋은 다른 두 가지 제한이 있습니다:

  • 값은 비어있을 수 없습니다. 빈 값을 제출하면 value required를 반환합니다.
  • 값은 16 KB를 초과할 수 없습니다. 이는 토큰에는 충분하지만, 예를 들어 전체 인증서 체인의 경우 시크릿이 아닌 파일에 있어야 합니다.

값 다시 읽기

행의 Copy를 클릭합니다. KPanel은 서버 측에서 값을 복호화하고 Value copied to clipboard 확인과 함께 클립보드에 바로 넣습니다. 값이 화면에 인쇄되지 않으므로 화면 공유나 어깨 너머에서 보는 사람이 값을 습득하지 못합니다.

모든 공개는 사이트의 감사 추적에 기록되며, 누가 했는지 그리고 어떤 키인지를 포함하고 Site Activity Log에 나타납니다.

값이 정확한지 확인해야 하지만 노출하지 않으려면 대신 마스크를 비교합니다. 마지막 네 자리는 올바른 토큰을 가지고 있는지 확인하기에 충분하며, 이미 화면에 표시되어 있습니다.

앱에서 시크릿 사용

값을 애플리케이션이 서버에서 구성을 읽는 위치로 복사합니다. Node.js 앱의 경우, 이는 일반적으로 프로세스 관리자가 설정한 환경 변수이거나 코드가 시작 시 로드하는 앱 루트의 .env 파일입니다.

해당 파일을 리포지토리에 커밋하지 마십시오. .env.gitignore에 추가한 후에 생성하십시오. git 원격으로 푸시된 시크릿은 파일을 삭제한 후에도 기록에 남아 있기 때문에 누출된 것으로 처리하고 공급자에서 순환시켜야 합니다.

Secrets 탭은 암호화되고 감사되는 값의 기록이며, 암호 관리자의 메모나 메시지 스레드가 아닙니다. 이를 진실의 원천으로 유지합니다: 공급자에서 키를 순환하면, 다음 배포 사람이 현재 값을 가지도록 동시에 여기서 업데이트합니다.

시크릿 삭제

행의 Delete를 클릭합니다. KPanel은 **Delete {KEY}?**로 확인하도록 하고 앱이 다음 재시작에서 이 값에 대한 액세스를 잃을 것이라는 경고를 합니다. 실행 취소가 없고 사본도 유지되지 않으므로, 값이 다시 필요할 수도 있다면 먼저 복사하세요.

기본 자격증명이 공급자에서 취소되었거나 이를 사용한 코드가 제거되었을 때 시크릿을 삭제합니다. 오래된 키를 남겨두면 나중에 실제로 중요한 키가 어떤 것인지 알기 어렵게 됩니다.

자격증명 안전하게 순환

안전한 순서는 항상: 공급자에서 새 자격증명을 만들고, 여기서 업데이트하고, 배포하고, 앱이 작동하는지 확인한 다음, 공급자에서 이전 자격증명을 취소합니다.

반대 방식으로 하면, 즉 먼저 취소하면, 실행 중인 앱이 죽은 자격증명을 보유하고 있고 이를 필요로 하는 모든 요청이 실패하는 기간이 생깁니다. 변경이 위험하면 먼저 백업을 하여 알려진 양호한 상태로 돌아갈 수 있도록 하세요: Taking a Backup을 참조합니다.

문제 해결

Secrets 탭이 메뉴에 없습니다. 사이트가 Node.js 사이트가 아닙니다. 페이지 맨 위의 사이트 이름 옆에 있는 스택 배지를 확인하세요.

Set 버튼이 작동하지 않습니다. 두 필드 모두 필수입니다. 하나라도 비어 있으면 버튼이 Key + value required를 보고합니다.

키가 거부되었습니다. 소문자, 하이픈, 마침표 및 공백은 허용되지 않습니다. api-keyApi_Key는 모두 실패합니다. API_KEY은 통과합니다.

Copy가 클립보드에 아무것도 넣지 않았습니다. 일부 브라우저는 비활성 탭에서 클립보드 쓰기를 차단합니다. 먼저 페이지를 클릭한 다음, Copy를 다시 클릭하세요.

다음으로 갈 곳

여전히 도움이 필요하신가요?

다음 주소로 이메일을 보내주세요 support@kapsulehost.com 또는 KPanel에서 채팅을 시작하세요.

KPanel 열기
사이트를 위한 앱 시크릿 저장하기