> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 시크릿

> API 키 및 기타 민감한 정보를 암호화된 환경 변수로 안전하게 저장하는 방법을 알아보세요.

시크릿 도구는 Replit 앱의 민감한 정보인 **시크릿** — API 키, 인증 토큰, 데이터베이스 연결 문자열 등 — 을 저장하고 암호화합니다.

시크릿을 추가하면 도구가 자동으로 데이터를 암호화하고 Replit 앱에 환경 변수로 제공합니다.
이 방법을 사용하면 코드에 시크릿을 하드코딩하지 않고 노출 위험을 줄일 수 있습니다.

<Frame>
  <iframe width="100%" height="400" src="https://www.youtube.com/embed/qE_2Z8ReyWI" title="Secrets Project Editor tool" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />
</Frame>

코드베이스에 시크릿을 하드코딩하면 다음 시나리오에서 실수로 노출될 수 있습니다:

* 공개 Replit 앱이나 복사-붙여넣기를 통해 코드를 다른 사람과 공유할 때
* 공개 저장소의 버전 관리에 코드를 커밋할 때
* 코드를 라이브 스트리밍하거나 화면 공유할 때

시크릿 도구를 사용해 자격증명 노출 걱정 없이 코드를 공유하세요.

<Frame caption="시크릿 Project Editor 도구">
  <img src="https://mintcdn.com/replit/9NKf1XREDj9JhKJb/images/workspace/secrets-tool.png?fit=max&auto=format&n=9NKf1XREDj9JhKJb&q=85&s=5e5454a3daaa5fc3f30d823e6c8c3c79" alt="screenshot of the Secrets tool" width="2276" height="1136" data-path="images/workspace/secrets-tool.png" />
</Frame>

## 기능

시크릿에는 다음 기능이 포함됩니다:

* **엔드투엔드 암호화**: 저장 시 AES-256 암호화, 전송 시 TLS 암호화를 사용해 자동으로 데이터 보호
* **앱 수준 시크릿**: 특정 Replit 앱에 대한 시크릿 저장 및 관리
* **계정 수준 시크릿**: 모든 Replit 앱에서 사용할 수 있는 시크릿 저장 및 관리
* **환경 변수 접근**: 환경 변수를 사용해 코드에서 시크릿에 접근
* **협업 접근**: 협업자 및 팀원과 시크릿 공유

## 사용 방법

<Note>
  시크릿은 정적 배포를 제외한 모든 배포 유형에서 사용할 수 있습니다.
</Note>

시크릿 Project Editor 도구에서 시크릿에 접근할 수 있습니다.

<Accordion title="시크릿에 접근하는 방법">
  왼쪽 **도구 도크**에서:

  1. <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-all-tools-button.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=579643854fb13c402de516695e52c554" alt="All tools icon" width="16" height="16" data-path="images/icons/workspace-all-tools-button.svg" /> **All tools**를 선택해 Project Editor 도구 목록을 확인하세요.
  2. <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/lock.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=0ebba01cdc579bafd52c21b5053788bc" alt="Secrets icon" width="16" height="16" data-path="images/icons/lock.svg" /> **Secrets**를 선택하세요.

  **검색 바**에서:

  1. 상단의 <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-search-icon.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=d3feed840da2d19e1ee4873d137114dc" alt="magnifying glass icon" width="16" height="16" data-path="images/icons/workspace-search-icon.svg" /> 돋보기를 선택해 검색 도구를 여세요
  2. "Secrets"를 입력해 도구를 찾고 결과에서 선택하세요.
</Accordion>

### 앱 시크릿 관리

**Secrets** 패널의 **App Secrets** 탭에서 앱 수준 시크릿을 관리할 수 있습니다.
이 탭에는 Replit 앱과 연결된 모든 시크릿 목록이 표시됩니다.

<Accordion title="앱 시크릿 추가">
  시크릿을 추가하려면:

  1. **New Secret**을 선택하세요.
  2. 시크릿의 이름인 **Key**와 시크릿 자체인 **Value**를 입력하세요.
  3. **Add Secret**을 선택해 항목을 저장하세요.
</Accordion>

<Accordion title="앱 시크릿 편집">
  시크릿을 편집하려면:

  1. 시크릿 옆의 <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" alt="three vertical dots icon" height="16" width="16" data-path="images/icons/vertical-dots.svg" /> 세로 점 메뉴를 선택하세요.
  2. 컨텍스트 메뉴에서 **Edit**를 선택하세요.
  3. **Key** 또는 **Value** 필드의 텍스트를 업데이트하고 **Update Secret**을 선택해 변경 사항을 저장하거나 **Cancel**을 선택해 변경을 취소하세요.

  탭 하단의 **Edit as JSON** 또는 **Edit as .env**를 선택해 앱 시크릿 전체 목록을 수정할 수도 있습니다.
</Accordion>

<Accordion title="앱 시크릿 보기">
  시크릿을 보려면 시크릿 옆의 <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=ef4c8029c7e1a366680367b9aa573029" alt="eye icon" width="16" height="16" data-path="images/icons/eye.svg" /> 눈 아이콘을 선택하세요.

  시크릿을 숨기려면 <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye-slash.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=cccbc60ff55d519c89c7b4d2a3e0ee4a" alt="eye with a slash icon" width="16" height="16" data-path="images/icons/eye-slash.svg" /> 슬래시가 있는 눈 아이콘을 선택하세요.
</Accordion>

<Accordion title="앱 시크릿 삭제">
  시크릿을 삭제하려면 시크릿 옆의 <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" alt="three vertical dots icon" height="16" width="16" data-path="images/icons/vertical-dots.svg" /> 세로 점 메뉴를 선택하고 **Delete**를 선택하세요.
</Accordion>

### 계정 시크릿 관리

**Secrets** 패널의 **Account Secrets** 탭에서 계정 수준 시크릿을 관리할 수 있습니다.
이 탭에는 Replit 계정과 연결된 시크릿 목록만 표시됩니다.

<Accordion title="계정 시크릿 추가">
  계정 수준 시크릿을 추가하려면:

  1. **Account Secrets** 탭으로 이동하세요.
  2. <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/settings-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=27601119959a9349e102c44c2adbd398" alt="gear icon" width="16" height="16" data-path="images/icons/settings-icon.svg" /> 아이콘을 선택해 **Settings**를 열고 계정 수준 시크릿을 관리하세요.
  3. **New Secret**을 선택해 시크릿을 추가하세요.
  4. 시크릿의 이름인 **Key**와 시크릿 자체인 **Value**를 입력하세요.
  5. **Save**를 선택해 항목을 저장하세요.
</Accordion>

<Accordion title="계정 시크릿 편집">
  시크릿을 편집하려면:

  1. 시크릿 옆의 <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/pencil-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=09de925e41efd3d1cfa199737639b5a6" alt="pencil icon" width="16" height="16" data-path="images/icons/pencil-icon.svg" /> 연필 아이콘을 선택하세요.
  2. **Key** 또는 **Value** 필드의 텍스트를 업데이트하고 **Save**를 선택해 변경 사항을 저장하거나 **Cancel**을 선택해 변경을 취소하세요.
</Accordion>

<Accordion title="계정 시크릿 보기">
  시크릿을 보려면 시크릿 옆의 <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=ef4c8029c7e1a366680367b9aa573029" alt="eye icon" width="16" height="16" data-path="images/icons/eye.svg" /> 눈 아이콘을 선택하세요.

  시크릿을 숨기려면 <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/eye-slash.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=cccbc60ff55d519c89c7b4d2a3e0ee4a" alt="eye with a slash icon" width="16" height="16" data-path="images/icons/eye-slash.svg" /> 슬래시가 있는 눈 아이콘을 선택하세요.
</Accordion>

<Accordion title="계정 시크릿 연결하기">
  Replit 앱에서 계정 수준 시크릿을 사용하려면 앱에 연결해야 합니다.
  계정 수준 시크릿을 연결하려면:

  1. **App Secrets** 탭으로 이동하세요.
  2. 시크릿 왼쪽의 체크박스를 선택하세요.
  3. **Link to this App**을 선택하세요.

  시크릿 연결을 해제하려면:

  1. **App Secrets** 탭으로 이동하세요.
  2. 시크릿 옆의 <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/vertical-dots.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=7b4b6a9992b3b20202297b60b6ef416d" width="16" height="16" alt="three vertical dots icon" data-path="images/icons/vertical-dots.svg" /> 세로 점 메뉴를 선택하세요.
  3. **Unlink**를 선택하세요.
</Accordion>

<Accordion title="계정 시크릿 삭제">
  1. 시크릿 옆의 <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/pencil-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=09de925e41efd3d1cfa199737639b5a6" alt="pencil icon" width="16" height="16" data-path="images/icons/pencil-icon.svg" /> 연필 아이콘을 선택하세요.
  2. **Delete**를 선택하세요.
</Accordion>

### 코드에서 시크릿에 접근하기

<CodeGroup>
  ```python Python theme={null}
  import os
  print(os.getenv("MY_SECRET"))
  ```

  ```javascript JavaScript theme={null}
  console.log(process.env.MY_SECRET);
  ```

  ```java Java theme={null}
  System.out.println(System.getenv("MY_SECRET"))
  ```

  ```csharp C# theme={null}
  using System;
  Console.WriteLine(Environment.GetEnvironmentVariable("MY_SECRET"));
  ```

  ```go Go theme={null}
  package main
  import (
      "fmt"
      "os"
  )
  func main() {
      fmt.Println(os.Getenv("MY_SECRET"))
  }
  ```

  ```ruby Ruby theme={null}
  puts ENV["MY_SECRET"]
  ```
</CodeGroup>

### 시크릿 가시성 관리

시크릿 가시성은 Replit 앱에 대한 접근 권한과 앱을 작성했는지 여부에 따라 달라집니다.

다음 옵션 중 하나를 사용해 Replit 앱을 공유할 수 있습니다:

* **Multiplayer**: Replit 사용자를 초대해 실시간으로 협업하기
* **Cover page**: Replit 앱의 미리 보기와 리믹스 옵션 표시하기
* **Remix**: 개인 또는 조직의 Replit 앱을 공개로 만들어 다른 사람이 자신만의 버전을 만들 수 있게 하기

다음 표는 다양한 시나리오에서 시크릿 이름과 값의 가시성을 보여줍니다:

| 접근 방법              | 대상                          | 이름 볼 수 있음 | 값 볼 수 있음 |
| ------------------ | --------------------------- | --------- | -------- |
| Multiplayer        | Multiplayer 협업자             | ✓         | ✓        |
| Multiplayer        | 조직 구성원 (Owner 역할)           | ✓         | ✓        |
| Multiplayer        | 조직 구성원 (비Owner)             | ✓         |          |
| Cover Page         | 모든 방문자                      |           |          |
| Remix              | 자신의 Replit 앱을 리믹스하는 소유자/협업자 | ✓         | ✓        |
| Remix              | 비소유자/협업자가 Replit 앱 리믹스      | ✓         |          |
| Remix              | cover page에서 리믹스하는 모든 사용자   | ✓         |          |
| Organization Remix | Owner 역할이 있는 조직 구성원         | ✓         | ✓        |
| Organization Remix | Owner 역할이 없는 조직 구성원         | ✓         |          |

<Warning>
  Owner 역할이 없는 조직 구성원은 Replit 앱에서 시크릿 값을 볼 수 없지만, 환경 변수를 출력해 값에 접근할 수 있습니다.
</Warning>

## 데이터베이스 관련 시크릿

Replit의 데이터베이스를 추가하면 Project Editor가 자동으로 다음 시크릿을 생성합니다:

| 시크릿            | 설명                |
| -------------- | ----------------- |
| `DATABASE_URL` | SQL 데이터베이스 연결 문자열 |

<Info>
  레거시 Neon 개발 데이터베이스에는 `PGHOST`, `PGUSER`, `PGPASSWORD`, `PGDATABASE`, `PGPORT`도 포함될 수 있습니다. 현재 Replit 개발 데이터베이스는 대신 `DATABASE_URL`을 사용합니다.
</Info>

Replit 앱의 모든 환경 변수를 보려면 Shell Project Editor 도구에서 `printenv`를 실행하거나 코드에서 출력하세요.

## 사전 정의된 환경 변수

Replit은 앱에서 접근할 수 있는 다음 환경 변수를 자동으로 설정합니다:

| 환경 변수               | 설명                                         |
| ------------------- | ------------------------------------------ |
| `REPLIT_DOMAINS`    | Replit 앱과 연결된 모든 도메인의 쉼표로 구분된 목록           |
| `REPLIT_USER`       | 현재 편집자의 사용자 이름 (Multiplayer 세션에서는 다를 수 있음) |
| `REPLIT_DEPLOYMENT` | 코드가 게시된 앱에서 실행 중이면 `1`로 설정, 그렇지 않으면 미설정    |
| `REPLIT_DEV_DOMAIN` | 배포 URL과 다른 `replit.dev` 도메인의 개발 URL        |

이것들은 시크릿 도구에 나열되지 않지만, `os.environ` 객체를 사용하거나 Shell에서 `printenv`를 실행해 코드에서 접근할 수 있습니다.
