비밀 및 환경 변수
코드를 작성하지 않고 Stripe 키나 설정을 함수에 전달하는 방법과 플랫폼이 실제로 보호하는 것은 무엇입니까?
1. 변수 설정
모든 변수는 하나의 함수에 속합니다. 변수를 설정하려면 service_role 키가 필요합니다.
PUT /env 는 전체 변수 세트를 사용자가 보내는 목록으로 대체합니다. aura secrets set 및 unset는 현재 값을 읽고, 이름을 지정한 키를 변경하고 결과를 다시 씁니다.
aura functions deploy를 사용하여 새 코드를 배포하면 변수가 그대로 유지됩니다.
2. 함수에서 읽어보세요
호출할 때마다 변수를 읽습니다. 변경 사항은 다음 호출에 적용됩니다.
3. 플랫폼이 추가하는 변수
| 변수 | 가치 |
|---|---|
AURABASE_PROJECT_ID | 프로젝트 ID입니다. 항상 설정됩니다. |
AURABASE_FUNCTION_NAME | 함수의 이름입니다. 항상 설정됩니다. |
AURABASE_URL | 플랫폼 운영자가 정의하는 플랫폼 URL입니다. |
AURABASE_ANON_KEY | 운영자가 정의하는 플랫폼 키. |
이러한 이름은 재정의할 수 없습니다. 호스트 환경은 함수에 표시되지 않습니다. 실제 실행에서는 Deno.env.get('PATH')이 undefined을 반환했습니다.
함수에서 자신의 프로젝트를 호출하려면 service_role 키를 해당 함수의 비밀로 저장하고 이를 HTTP 요청의 apikey 헤더에 보냅니다. 절대로 사용자의 키를 전달하지 말고 브라우저에 service_role 키를 넣지 마십시오.
4. 암호화되는 내용
| 경로 | 저장 시 암호화됨 |
|---|---|
PUT /v1/functions/{name}/env | 예, 인 경우 서비스에 암호화 키가 구성되어 있습니다(FN_ENV_ENCRYPTION_KEY, AES-256-GCM). 이것이 없으면 값은 전송된 대로 저장되고 서비스는 시작 시 경고를 기록합니다. |
aura secrets set / unset | 아니요: CLI는 전송된 값을 저장하는 PATCH를 통해 씁니다. |
배포 요청의 env_vars | 아니요, 같은 이유입니다. |
로컬 테스트에서는 키가 구성되지 않았기 때문에 PUT /env에 의해 작성된 값이 함수 정의에 의해 변경되지 않고 반환되었습니다.
비밀이 암호화되는지 여부는 배포에 따라 다르며 PUT /env 경로만 암호화할 수 있습니다. CLI 경로는 이를 주어진 대로 저장합니다. CLI가 PUT /env을 사용할 때까지 프로덕션 비밀에 대해 위의 HTTP 호출을 사용하세요.
비밀을 다시 읽는 것도 제한됩니다. GET /v1/functions/{name}/env는 해독된 값을 반환하며 GET /v1/functions/{name}와 마찬가지로 service_role 키가 필요합니다. 공개 키는 403를 받습니다.
5. 따라야 할 규칙
index.ts에 비밀을 하드 코딩하지 마십시오. 함수의 소스 코드는 프로젝트에 저장되고service_role호출자에게 반환됩니다.- 비밀을 기록하지 마십시오.
console.log의 출력은 런타임 로그로 끝납니다. - 작동하는 가장 좁은 키(마스터 키가 아닌 공급자의 제한된 키)를 사용하여 함수당 하나의 변수를 사용합니다.
- 새 값을 설정하고 아무것도 재배포하지 않음으로써 키를 순환합니다. 다음 호출에서 이를 사용합니다.