환경 변수를 1Password CLI로 관리

5263 단어 CLIenv1Passwordtech

개시하다


현대 앱에는 외부 서비스의 API 키 등 다양한 신용카드가 많다.
개발자 간에 이 도구들을 안전하게 공유하기 위해sops,doppler,git-crypt 등의 도구를 사용할 수 있다.
또 개발 시 사용direnv 등 환경 변수를 설정하는 경우도 많죠.
그러나 이것들은 모두 추가 도구를 설치해야 한다.
1Password를 사용하는 팀에 속한다면 1Password로 신용카드를 관리하고 환경 변수로 설정하면 새로운 도구를 가져올 필요가 없어 가볍다.
이 글은 그것을 실현하는 절차를 소개한다.

CLI 설정


먼저 1Password의 CLI를 설치합니다.이렇게 하면 op 명령을 사용할 수 있다.
brew install --cask 1password/tap/1password-cli
op signin 명령을 사용하여 로그인하면 세션export을 실행하는 명령을 출력하여 실행eval합니다.
만약 이것이 성공한다면 1Password의 인증이 끝난 상태로 각 항목에 접근할 수 있습니다.
eval $(op signin)

변수 설정

foo와 같은 응용 프로그램을 제작하고 foo-app-environment-variables와 같은 안전 노트를 제작할 것을 구상한다.
op item create --title foo-app-environment-variables --category 'Secure Note'
두 환경 변수를 예로 추가합니다.
op item edit foo-app-environment-variables FOO=bar
op item edit foo-app-environment-variables FIZZ=buzz
여기에 op item edit 명령을 사용했고 GUI에서도 설정할 수 있다.
1Password에 표시된 이미지는 다음과 같습니다.다만FIZZ.
secure-note

변수 참조

Reveal에서 보안 노트의 각 필드를 JSON으로 출력할 수 있습니다.op item get --format json를 사용하여 이 JSON을 jq의 형식export FOO=bar으로 조정한다.
eval $(op item get --format json foo-app-environment-variables | jq -r '.fields[] | select(.value) | "export " + (.label) + "=\"" + (.value) + "\""')
이렇게 하면 현재의 껍질은 환경 변수가 설정한 상태가 된다.
$ echo $FOO
bar

유틸리티 준비


설정이 완료되면 예를 들어 eval 같은 이름으로 케이스 스크립트를 준비할 수 있으며 긴 명령을 입력하지 않아도 환경 변수를 설정할 수 있어 편리하다.
$ echo $FOO
(何も表示されない)

$ cat env.sh
eval $(op signin)
eval $(op item get --format json foo-app-environment-variables | jq -r '.fields[] | select(.value) | "export " + (.label) + "=\"" + (.value) + "\""')

$ source env.sh

$ echo $FOO
bar
이렇게 되면 처음에 누군가가 이것을 설정한 후에 다른 사람들은 집행env.sh만 하면 1Password의 환경 변수를 조개껍질에 반영할 수 있다.

(응용 사례) GiitHub Action과 공동 작업

source env.sh 명령을 동시에 사용하면 GiitHub Action에서 같은 비밀을 설정하는 것도 간단하다.
eval $(op item get --format json foo-app-environment-variables | jq -r '.fields[] | select(.value) | "gh secret set " + (.label) + " -b \"" + (.value) + "\""')

좋은 웹페이지 즐겨찾기