전체 글

FourA Digest (2026년 5월 29일 ~ 6월 5일)

이번 주에 생성된 API 키는 다시 확인할 수 있습니다. Dashboard가 이를 기억하고, playground의 curl 재현 도구가 자동으로 입력해 주며, 느린 request를 취소할 수도 있습니다.

Highlights

이제 API 키를 다시 확인할 수 있습니다. Dashboard에서 키를 생성하고 창을 닫은 뒤, 다음 주에 다시 돌아와도 클릭 한 번으로 키를 확인할 수 있습니다. 또한 API playground의 세 가지 불편한 점을 개선하여 curl 재현 도구가 실제로 정상 작동하도록 했습니다.

What's New

API keys you can see again

대부분의 SaaS API는 키를 한 번만 보여줍니다. 분실하면 재생성해야 합니다. 기존 키를 사용하는 모든 서비스를 업데이트해야 합니다. 그리고 다시 배포해야 합니다. 익숙한 번거로움일 것입니다.

저희는 이 방식이 마음에 들지 않았습니다. 그래서 변경했습니다.

이제부터 생성되는 키는 다시 확인할 수 있는 복사본과 함께 제공됩니다. Dashboard를 열고 아무 키 옆에 있는 눈 아이콘을 클릭한 뒤 확인하면, 전체 pk_live_... 값이 화면에 나타납니다. 15초 후에 자동으로 숨겨지며 페이지에서 지워집니다. 모든 조회 내역은 감사 로그(audit log)에 기록됩니다.

저희가 중요하게 생각한 몇 가지 디테일은 다음과 같습니다.

  • request를 인증하는 경로는 여전히 단방향 해시로 유지되며 변경되지 않았습니다. 다시 볼 수 있는 복사본은 그 옆에 별도로 존재하는 암호화된 아티팩트(AES-256-GCM)입니다. 암호화 키를 교체하더라도 인증 기능은 계속 정상 작동합니다.
  • 이번 변경 전에 생성된 키는 다시 확인할 수 없습니다. 읽어올 암호화된 복사본이 없기 때문입니다. 이 키들은 해시 경로를 통해 앞으로도 계속 작동합니다. Dashboard에 작은 자물쇠 표시와 "regenerate to enable" 힌트가 표시되므로, 어떤 키가 새 기능을 지원하고 지원하지 않는지 쉽게 구분할 수 있습니다.
  • 액세스 제어는 다른 키 API와 동일하게 적용됩니다. 본인의 키는 직접 확인할 수 있습니다. 조직 관리자(org admin)는 조직 내의 모든 키를 확인할 수 있습니다. 팀 쓰기(team-write) 권한이 있는 멤버는 팀 키를 확인할 수 있습니다. 읽기 전용(read-only) 역할은 확인할 수 없습니다.
  • 조직 관리자가 팀원을 대신해 생성한 키도 동일한 규칙에 따라 다시 확인할 수 있습니다. 이 기능은 키를 생성한 화면이 아니라 키 자체에 종속되어 작동합니다.

그동안 비밀번호 관리 프로그램에 FourA 키를 가득 저장해 두셨다면, 이제 그러지 않으셔도 됩니다.

The curl reproducer is real curl now

playground에서 빌드하는 모든 request 옆에는 복사하여 붙여넣을 수 있는 curl 명령어가 함께 제공됩니다. 개념은 간단합니다. UI에서 request를 올바르게 구성한 뒤, curl을 복사하여 스크립트, 팀원의 터미널 또는 버그 리포트에 바로 붙여넣는 것입니다.

이번 주 전까지는 curl 명령어의 키가 들어갈 자리에 플레이스홀더(PASTE_PLAINTEXT_FOR_my-key)가 표시되어, 실행하기 전에 수동으로 직접 채워 넣어야 했습니다. 재현 도구가 아니라 템플릿에 불과했던 것입니다.

이제 이 문제가 해결되었습니다. 다시 확인 가능한 모든 키에 대해, playground의 curl 패널에 Reveal 버튼이 제공됩니다. 버튼을 클릭하면 실제 평문이 curl에 입력되며, 전체를 복사하여 터미널에 붙여넣으면 바로 실행됩니다. 다시 클릭하면 숨겨집니다. 이 조회 기능은 해당 세션의 메모리 상에서만 동작하며 디스크에 기록되지 않습니다. 또한 curl 패널은 키 드롭다운 선택 상태를 추적하므로, 키를 전환할 때 다른 키로 유출되지 않습니다. 이전의 다시 확인할 수 없는 키들은 평문 값을 다시 가져올 수 없기 때문에 여전히 플레이스홀더가 표시됩니다.

Cancel button on in-flight requests

이전에는 느린 대상 사이트를 상대로 playground request를 실행하면 타임아웃이 될 때까지 기다리는 방법밖에 없었습니다. 이제 로딩 패널에 Cancel 버튼을 추가했습니다. 버튼을 클릭하면 request가 깔끔하게 중단되고, response 영역은 무서운 에러 메시지 대신 "Request canceled."와 함께 대기 상태로 돌아갑니다.

작은 변화입니다. 하지만 이제 playground가 데모가 아닌 진짜 도구처럼 느껴집니다. 불안정한 사이트를 탐색하다가 중단하고, request를 수정한 뒤, 가만히 앉아 기다릴 필요 없이 바로 다시 시도할 수 있습니다.

Under the Hood

최초 배포 이후 curl Reveal 버튼에 대해 세 가지 소규모 후속 조치가 있었습니다. 에러 토스트(toast) 메시지가 기계적인 에러 코드 대신 친절한 메시지를 표시하도록 변경되었고, 다른 부분에서 예외가 발생하더라도 버튼이 "Revealing…" 상태로 멈추지 않으며, 다시 보기를 지원하지 않는 키에서도 버튼이 계속 표시되던 CSS 명시도(specificity) 버그가 해결되었습니다.

이러한 현상을 겪으셨다면 이제 모두 해결되었을 것입니다. 겪지 않으셨다면 신경 쓰지 않으셔도 괜찮습니다.

생성하고, 복사하고, 붙여넣고, 잊어버리세요. 나중에 다시 돌아오셔도 됩니다. Dashboard가 기억하고 있으니까요.