Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
teller — 개발자를 위한 클라우드 네이티브 시크릿 관리 - 시크릿을 위해 커맨드 라인을 떠나지 마세요. | Kitploit
도구/GitHubGitHub/tellerops/teller
Cloud Infrastructure SecurityCode AnalysisCloud SecurityDevSecOpsSecret Detection
GitHubtellerops/teller

teller

개발자를 위한 클라우드 네이티브 시크릿 관리 - 시크릿을 위해 커맨드 라인을 떠나지 마세요.

저장소 보기
3.2k2016개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유






:computer: 시크릿을 위해 터미널을 떠나지 마세요
:pager: 클라우드 환경 작업을 위한 쉽고 깔끔한 워크플로우를 만드세요
:mag_right: 시크릿을 스캔하고 시크릿 확산을 방지하세요


Teller - 개발자를 위한 오픈소스 범용 시크릿 매니저

앱을 개발하고, 테스트하고, 빌드하는 동안 시크릿을 사용하려고 터미널을 떠날 필요가 없습니다.

커스텀 스크립트, .zshrc 파일에 있는 토큰, bash 히스토리에 노출된 EXPORT, 워크스테이션 여기저기에 흩어진 .env.production 파일 대신 teller를 사용하고 원하는 볼트, 키스토어, 클라우드 서비스에 연결하세요 (Teller는 Hashicorp Vault, AWS Secrets Manager, Google Secret Manager 등 여러 서비스를 지원합니다).

Teller를 사용하여 자신의 환경을 정리하거나 팀의 프로세스이자 모범 사례로 사용할 수 있습니다.

teller로 빠른 시작

바이너리 다운로드 릴리스에서 바이너리를 받으세요.

소스에서 빌드 이 방법을 사용하면 소스 코드를 직접 살펴보고 검토한 다음 직접 빌드할 수 있습니다.

이렇게 하면 바이너리가 로컬 머신에 설치됩니다:

root@kitploit:~
$ cd teller-cli
$ cargo install --path .

새 구성 만들기

root@kitploit:~
$ teller new
? Select your secret providers ›
⬚ hashicorp_consul
⬚ aws_secretsmanager
⬚ ssm
⬚ dotenv
⬚ hashicorp
⬚ google_secretmanager

그런 다음 새로 생성된 .teller.yml을 편집해 프로바이더에 필요한 맵과 키를 설정하세요.

teller.yml 살펴보기

teller YAML은 프로바이더를 설명하며, 각 프로바이더 안에는 다음을 설명하는 map이 있습니다:

  • 키-값을 가져올 루트 경로
  • 각 맵에 대해, 이후 작업에 사용할 고유한 id
  • 각 맵에 대해, 선택적인 특정 키 이름 매핑 - 소스 프로바이더에서 가져올 키의 이름을 바꿀 수 있습니다

다음은 예시 구성 파일입니다. 구성 로드 중에 환경 변수를 가져오는 것과 같은 템플릿 구문도 포함되어 있습니다:

root@kitploit:~
providers:
  hashi_1:
    kind: hashicorp
    maps:
      - id: test-load
        path: /{{ get_env(name="TEST_LOAD_1", default="test") }}/users/user1
        # if empty, map everything
        # == means map to same key name
        # otherwise key on left becomes right
        # in the future: key_transform: camelize, snake_case for automapping the keys
        keys:
          GITHUB_TOKEN: ==
          mg: FOO_BAR
  dot_1:
    kind: dotenv
    maps:
      - id: stg
        path: VAR_{{ get_env(name="STAGE", default="development") }}

이제 프로바이더를 hashi_1 또는 dot_1로 지정할 수 있습니다. Teller는 기본적으로 모든 프로바이더에서 지정된 데이터를 가져옵니다.

기능

🏃 하위 프로세스 실행

데모/프로덕션 유사 환경으로 프로세스를 실행하기 위해 환경 변수를 수동으로 export하고 설정하고 계신가요?

.env.production을 사용하다가 로컬 프로젝트에 그대로 노출되는 문제를 겪어 보셨나요?

엿보는 눈에 아무것도 노출하지 않는 teller와 .teller.yml 파일을 사용하면 위험 없이 유연하고 매끄럽게 작업할 수 있고 따옴표도 필요 없습니다:

root@kitploit:~
$ teller run --reset --shell -- node index.js

🔎 변수 확인

이 명령은 teller가 가져오는 현재 변수를 출력합니다. 물론 각 변수의 앞 두 글자만 표시됩니다.

root@kitploit:~
$ teller show

📺 로컬 셸 채우기

셸 스크립트와 dotfile에 시크릿을 하드코딩하고 계신가요?

어떤 경우에는 현재 셸에 변수를 eval하는 것이 합리적입니다. 예를 들어 .zshrc에서는 teller를 사용하는 것이 모든 값을 .zshrc 파일에 직접 하드코딩하는 것보다 훨씬 합리적입니다.

이 경우 다음과 같이 추가하세요:

root@kitploit:~
eval "$(teller sh)"

🐳 간편한 Docker 환경

온갖 변수를 가져와서 설정하고, 그것들이 셸 히스토리에 남을까 걱정되시나요?

이제부터는 다음 원라이너를 사용하세요:

root@kitploit:~
$ docker run --rm -it --env-file <(teller env) alpine sh

⚠️ 시크릿 스캔

Teller는 시크릿 확산과 하드코딩된 시크릿을 방지하는 데 도움이 될 뿐만 아니라 볼트 작업을 위한 최고의 생산성 도구가 될 수 있습니다.

또한 CI에 통합하여 DevSecOps 파이프라인을 위한 shift-left 보안 도구로 사용할 수 있습니다.

코드에서 볼트에 보관된 시크릿을 찾으려면 다음 명령을 실행하세요:

root@kitploit:~
$ teller scan

CI에서 다음과 같이 린터(linter)로 실행할 수 있습니다:

root@kitploit:~
run: teller scan --error-if-found

무언가 발견하면 빌드를 중단합니다(종료 코드 1 반환).

또한 --json으로 결과를 JSON으로 내보낼 수 있으며 -b로 바이너리 파일을 스캔할 수 있습니다.

♻️ 프로세스 출력, 로그 및 파일에서 시크릿 마스킹

teller를 인프라 전반의 마스킹 도구로 사용할 수 있으며, 프로세스 출력을 마스킹하면서 프로세스를 실행하고 로그와 실시간 로그 테일을 정리할 수도 있습니다.

프로세스 출력, 테일 또는 로그를 teller에 파이프하여 실시간으로 마스킹하세요:

root@kitploit:~
$ cat some.log | teller redact

tail -f에서도 작동합니다:

root@kitploit:~
$ tail -f /var/log/apache.log | teller redact

마지막으로, 마스킹하려는 파일이 있다면 그렇게 할 수도 있습니다:

root@kitploit:~
$ teller redact --in dirty.csv --out clean.csv

--in을 생략하면 Teller는 stdin을 입력으로 받고, --out을 생략하면 stdout으로 출력합니다.

📜 템플릿 채우기

커스텀 템플릿을 채울 수 있습니다:

root@kitploit:~
$ teller template --in config-templ.t

템플릿 형식은 Tera이며, liquid나 handlebars와 매우 유사합니다.

다음은 예시 템플릿입니다:

root@kitploit:~
production_var: {{ key(name="PRINT_NAME")}}
production_mood: {{ key(name="PRINT_MOOD")}}

🔄 프로바이더 간 데이터 복사/동기화

프로바이더 간에 동기화하려는 경우 teller copy로 처리할 수 있습니다.

특정 매핑 키 동기화

<provider name>/<map id> 형식을 사용하여 한 프로바이더의 매핑을 다른 프로바이더로 복사할 수 있습니다:

root@kitploit:~
$ teller copy --from source/dev --to target/prod,<...>

이 간단한 예시에서는 다음 구성 파일을 사용합니다.

root@kitploit:~
providers:
  dot1:
    kind: dotenv
    maps:
      - id: one
        path: one.env
  dot2:
    kind: dotenv
    maps:
      - id: two
        path: two.env

이렇게 하면:

  1. 소스 매핑에서 매핑된 모든 값을 가져옵니다
  2. 각 대상 프로바이더에서 일치하는 매핑을 찾아 소스의 값을 복사합니다

기본적으로 복사는 대상 매핑을 업데이트합니다(데이터 upsert). 교체하려면 --replace를 사용할 수 있습니다.

🚲 프로바이더에 쓰기 및 멀티 쓰기

Teller 프로바이더는 프로바이더 안에 값을 쓸 수 있는 write 사용 사례를 지원합니다.

이 기능도 여전히 teller.yml 파일의 정의를 기반으로 합니다:

root@kitploit:~
$ teller put --providers new --map-id one NEW_VAR=s33kret

이 예시에서는 다음 구성이 사용됩니다:

root@kitploit:~
providers:
  new:
    kind: dotenv
    maps:
      - id: one
        path: new.env

몇 가지 참고 사항:

  • 값은 key=value 형식의 키-값 쌍이며, 여러 쌍을 한 번에 지정할 수 있습니다
  • 리터럴 민감 값을 지정할 때는 민감한 내용이 히스토리에 기록되지 않도록 ENV 변수를 사용하세요
  • --providers 플래그를 사용하면 하나 이상의 프로바이더에 동시에 푸시할 수 있습니다

❌ 프로바이더에서 삭제 및 멀티 삭제

Teller 프로바이더는 프로바이더 에서 값을 _삭제_하는 기능을 지원합니다.

root@kitploit:~
$ teller delete --providers new --map-id one DELETE_ME

몇 가지 참고 사항:

  • 삭제할 여러 키를 지정할 수 있습니다. 예를 들어:
  • --providers 플래그를 사용하면 하나 이상의 프로바이더에 동시에 푸시할 수 있습니다

YAML YAML 형식으로 내보내기

XXX TODO: export 명령이 동작하는 방식을 재작성하세요.

YAML 형식으로 내보낼 수 있으며, GCloud에 적합합니다:

root@kitploit:~
$ teller export yaml

형식 예시:

root@kitploit:~
FOO: "1"
KEY: VALUE

JSON JSON 형식으로 내보내기

JSON 형식으로 내보낼 수 있으며, jq나 다른 워크플로우에 파이프하기에 적합합니다:

root@kitploit:~
$ teller export json

형식 예시:

root@kitploit:~
{
  "FOO": "1"
}

프로바이더

프로바이더 및 해당 구성 값 목록은 문서에서 확인할 수 있습니다.

테스트 체크리스트:

  • Windows에서 Docker: Docker를 사용하는 컨테이너 기반 테스트가 있다면 #[cfg(not(windows))]를 사용하여 Windows에서 제외하세요.

  • 리소스 의미론: 프로바이더를 빌드할 때 _empty_와 _not found_를 서로 다른 의미론으로 취급하세요. 프로바이더가 명시적인 "not found" 의미론(404, NotFound 등)을 지원하면 Error::NotFound를 사용하세요. 프로바이더가 "not found" 의미론을 빈 데이터 묶음으로 전달하는 경우 빈 KV[]를 반환하세요(즉, "empty" 의미론을 "not found"로 변환하지 마세요).

테스트

테스트는 다음 명령으로 수행합니다:

root@kitploit:~
$ cargo test --all --all-features

그리고 머신에 Docker(또는 이에 상응하는 도구)가 필요합니다.

감사의 말:

모든 기여자 여러분 - 여러분이 이 프로젝트를 가능하게 해 주셨습니다. 감사합니다!

행동 강령

Teller는 CNCF 행동 강령을 따릅니다.

저작권

Copyright (c) 2024 @jondot. 자세한 내용은 LICENSE를 참조하세요.

도구 다운로드