액세스 토큰 (Access tokens)
GitHub Actions로 앱을 배포하든 자체 CD 서비스를 실행하든, 전능한(all-powerful) 토큰으로 배포 인프라를 구성하는 것은 피하는 것이 좋아요. 저희 액세스 토큰은 macaroon을 사용하며, 미리 정의된 범위가 있어서 org 전체 접근부터 단일 앱의 Machine에서 특정 명령을 실행하는 것까지 범위를 줄일 수 있습니다.
출처: 문서
본문
GitHub Actions로 앱을 배포하든 자체 CD 서비스를 실행하든, 전능한(all-powerful) 토큰으로 배포 인프라를 구성하는 것을 피하는 것이 가장 좋아요. 저희 액세스 토큰은 macaroon을 사용하며, 여기에는 미리 정의된 범위가 있어 org 전체 접근에서부터 단일 앱의 Machine에서 특정 명령을 실행하는 것까지 접근을 줄일 수 있습니다. 모든 세부 사항을 원한다면 macaroon을 사용하기로 한 결정에 대해 API Tokens: A Tedious Survey와 Macaroons escalated quickly 블로그 게시물에서 읽어볼 수 있어요.
**중요:** 저희는 이전에 문서와 커뮤니티에서 `fly auth token` 명령의 출력을 모든 것에 대한 API 토큰으로 사용하라고 제안했었습니다. 이는 더 이상 사실이 아닙니다. 인증 토큰("personal access token" 또는 "all-powerful auth token"이라고도 함)은 `fly auth login`으로 로그인할 때마다 자동으로 생성되는 매우 짧은 수명의 토큰입니다. 이는 flyctl이 계정의 모든 조직에 있는 모든 앱을 생성, 관리, 구성, 배포하는 데 사용됩니다. 대신 `fly tokens deploy` 또는 `fly tokens org`로 만든 토큰을 사용해야 합니다. 항상 목적에 맞게 동작하는 가장 좁은 접근 권한을 가진 토큰을 사용하는 것이 좋아요.flyctl을 사용해 서로 다른 사전 정의 범위를 가진 Fly.io 액세스 토큰을 만들 수 있어요.
앱 범위 토큰 (App-scoped tokens)
"배포 토큰(deploy token)"이라고도 불리는 앱 범위 토큰을 사용해 접근을 단일 앱으로 제한하세요. 앱 범위 토큰은 토큰을 제3자와 공유해야 하는 CI/CD 파이프라인에 유용합니다.
표준 앱 범위 배포 토큰, 앱의 Machine에 SSH로 접속하기 위한 토큰, 앱의 Machine에서 명령을 실행하기 위한 토큰을 만들 수 있어요.
Org 범위 토큰 (Org-scoped tokens)
단일 조직 내의 모든 앱을 관리할 수 있는 접근에는 org 범위 토큰을 사용하세요. org 범위 토큰은 인증 토큰과 더 제한된 앱 범위 토큰 사이의 중간 지점이며, 단일 org를 자동화하려 할 때 유용합니다.
표준 org 범위 토큰 또는 읽기 전용 org 범위 토큰을 만들 수 있어요.
토큰 생성 및 관리
flyctl을 사용해 토큰을 만들고 관리하세요. fly tokens create 명령에는 토큰을 사용자 지정하는 몇 가지 유용한 옵션이 있습니다:
-
토큰 이름: 여러 토큰을 관리한다면
--name옵션으로 토큰에 사용자 지정 이름을 지정해서 flyctl로 나열하거나 대시보드에서 볼 때 찾기 쉽게 하세요. -
토큰 만료: 토큰을 만들 때
--expiry옵션으로 토큰이 유효한 기간을 포함하세요. 사용 사례에 가장 짧은 기간을 지정해서 시간과 범위 모두로 접근을 제한해야 해요. 토큰은 기본적으로 20년(175200h0m0s) 동안 유효합니다.
모든 옵션과 명령에 대해서는 fly tokens 명령 문서를 참고하세요.
앱 범위 토큰 만들기
앱 범위 토큰은 단일 앱과 그 리소스 관리로 제한됩니다. WireGuard 터널 관리 같은 일부 조직 전체 기능은 배포에 필수적이며 배포 토큰에서도 접근할 수 있습니다.
--name 옵션으로 이름을 지정하지 않으면 기본 이름은 flyctl deploy token입니다.
사용자 지정 이름과 만료로 앱 범위 배포 토큰을 만듭니다:
fly tokens create deploy --name <"my token name"> --expiry <duration>
이 예시는 staging one이라는 앱 범위 배포 토큰을 48시간 유효하게 만듭니다:
fly tokens create deploy --name "staging one" --expiry 48h
SSH 전용 앱 범위 토큰 만들기
단일 앱에 SSH로 접속하기 위한 토큰을 만듭니다. SSH 토큰은 특정 앱에 대한 SSH 접근만 허용하고 그 외에는 아무것도 허용하지 않도록 범위가 지정됩니다. 앱에 SSH로 접속할 수 있으려면 이 토큰은 조직의 WireGuard 네트워크에 연결할 수 있어야 합니다.
예를 들어:
flyctl tokens create ssh -a my-app > my-app.token.ssh
토큰을 사용해 앱에 SSH로 접속합니다:
FLY_API_TOKEN=$(cat my-app.token.ssh) flyctl ssh console -a my-app
Machine에서 명령을 실행하기 위한 앱 범위 토큰 만들기
machine-exec 토큰은 앱의 Machine에서 제한된 명령 집합을 실행할 수 있어요. 명령줄이나 --command 및 --command-prefix 옵션으로 명령을 지정할 수 있습니다. 명령을 제공하지 않으면 모든 명령이 허용됩니다.
machine exec 토큰을 만듭니다:
fly tokens create machine-exec --command "<exact command and arguments to run>"
Org 범위 토큰 만들기
Org 범위 토큰은 단일 org와 그 리소스(앱 포함) 관리로 제한됩니다.
--name 옵션으로 이름을 지정하지 않으면 기본 이름은 Org deploy token입니다.
사용자 지정 이름과 기간으로 org 범위 배포 토큰을 만듭니다:
fly tokens create org --name <"my token name"> --expiry <duration>
이 예시는 prod라는 org 범위 배포 토큰을 1주일 유효하게 만듭니다:
fly tokens create org --name "prod" --expiry 168h
Org 범위 읽기 전용 토큰 만들기
org 범위 배포 토큰을 읽기 전용으로 만들어 더 제한할 수 있습니다. 그러면 토큰 접근이 단일 org와 그 리소스 읽기로 제한됩니다.
--name 옵션으로 이름을 지정하지 않으면 기본 이름은 Read-only org token입니다.
사용자 지정 이름과 만료로 읽기 전용 org 범위 배포 토큰을 만듭니다:
fly tokens create readonly --name <"my token name"> --expiry <duration>
기존 토큰을 기반으로 읽기 전용 토큰을 만듭니다:
fly tokens create readonly --name <"my token name"> --expiry <duration> --from-existing -t <existing token starting with fm2_>
토큰 나열 또는 보기
현재 앱의 모든 토큰을 나열하거나, --app 옵션으로 앱을 지정합니다:
fly tokens list
org 범위 토큰을 포함해 org의 모든 토큰을 나열합니다:
fly tokens list --scope org
토큰 취소
-
토큰을 나열하고 취소할 토큰의 ID를 복사합니다. org 범위 토큰을 나열하려면
--scope org를 포함하세요.fly tokens list -
토큰을 취소합니다:
fly tokens revoke <token ID>
대시보드에서 토큰 관리
앱 범위 토큰을 관리하려면 앱을 클릭한 다음 Tokens를 클릭합니다. 여기서 토큰을 취소하거나 새 토큰을 만들 수 있어요.
org 범위 토큰을 관리하려면 드롭다운에서 조직을 선택한 다음 Tokens를 클릭합니다. 여기서 토큰을 취소하거나 새 토큰을 만들 수 있습니다.