figma3분 읽기

큐레이션 요약

피그마 내부 이야기: 내부 웹

원문 읽기(새 탭에서 열림)

Figma는 내부 웹 애플리케이션을 안전하게 공개하기 위해 AWS Application Load Balancer(ALB), Cognito, Okta, SAML, Lambda, Terraform을 조합한 중앙화된 접근 제어 시스템을 구축했다. 이 시스템은 사내 네트워크를 신뢰하지 않는 제로 트러스트 원칙을 따르면서도, 직원에게 빠르고 일관된 인증 경험을 제공하는 것을 목표로 한다. 또한 권한 관리를 중앙화하고 인프라 구성을 코드로 자동화해 보안팀의 운영 부담을 줄였다.

내부 웹 앱 보안의 요구사항

  • 배포, 고객 지원 등 내부 웹 도구는 직원 업무에 필수적이지만 사용자 데이터에 접근할 수 있어 높은 보안 수준이 필요하다.
  • 공격자는 사용자 데이터를 노리기 위해 관리용 백엔드와 내부 애플리케이션을 주요 공격 대상으로 삼는다.
  • 시스템 설계 시 다음 요구사항을 우선했다.
    • 빠르고 안정적이며 사용하기 쉬운 인증
    • 네트워크 위치만으로 신뢰하지 않는 제로 트러스트 접근
    • WebAuthn 같은 최신 인증 기술 활용
    • IT·보안팀이 관리하는 중앙화된 권한 부여
    • 소규모 보안팀의 운영 부담 최소화

사용한 핵심 기술

  • SAML
    • 서비스 간 사용자 신원 정보를 전달하는 인증 프로토콜이다.
    • 사용자 신원뿐 아니라 그룹과 역할 정보도 assertion에 포함할 수 있다.
    • Okta와 AWS Cognito를 연결하는 기반으로 사용된다.
  • AWS Application Load Balancer
    • HTTP/HTTPS 요청을 받아 규칙에 따라 내부 인프라로 전달하는 관리형 리버스 프록시다.
    • 애플리케이션 앞단에서 사용자 인증을 수행할 수 있다.
  • AWS Cognito
    • 사용자 인증 및 관리 API를 제공한다.
    • SAML과 같은 외부 연합 로그인 기술과 통합할 수 있다.
  • AWS Lambda
    • 특정 이벤트나 조건에 따라 코드를 실행하는 서버리스 컴퓨팅 구성요소다.
  • Terraform
    • AWS와 Okta 설정을 코드로 관리한다.
    • 인증 인프라를 검토·자동화·재사용할 수 있게 해준다.

ALB와 Okta를 이용한 인증 구조

  • Figma는 클라우드 인프라에 AWS를, 직원 인증·권한 관리에 Okta를 사용한다.
  • ALB는 일반적으로 OIDC 인증을 구성할 수 있지만, Okta의 OIDC 지원 비용 문제로 다른 방식을 검토했다.
  • 대안으로 ALB + Cognito 사용자 풀 + Okta SAML 조합을 사용했다.
  • Cognito가 SAML 기반 Okta 로그인과 ALB 사이를 연결하므로, ALB가 인증된 트래픽만 내부 애플리케이션으로 전달할 수 있다.
  • 각 내부 앱마다 Okta에 SAML 애플리케이션을 만들고, 해당 앱과 연결된 Cognito Identity Provider를 구성한다.

Terraform을 통한 표준화와 자동화

  • Figma는 ALB와 Cognito를 올바른 설정으로 생성할 수 있도록 Terraform 모듈을 직접 만들었다.
  • 인프라 엔지니어는 모듈을 사용해 Okta 인증이 적용된 ALB를 빠르게 배포할 수 있다.
  • 인증 구성을 수작업으로 반복하지 않고 코드로 관리하므로 다음 효과가 있다.
    • 설정의 일관성 확보
    • 변경 사항 검토 가능
    • 여러 내부 앱에 동일한 보안 패턴 재사용
    • 운영 및 유지보수 부담 감소

Cognito 사용자 풀 구성

  • Cognito User Pool에서는 일반 사용자의 직접 회원가입을 허용하지 않는다.
  • 사용자는 Okta에서 인증되어야 하며, Cognito는 Okta용 SAML Identity Provider와 연결된다.
  • email과 profile 같은 속성 매핑을 설정해 Okta의 사용자 정보가 인증 과정에서 전달되도록 한다.
  • 결과적으로 내부 앱은 각자 복잡한 인증 로직을 구현하지 않고도, ALB 앞단에서 중앙화된 인증을 적용할 수 있다.

확장 방향

  • 글에서는 기본 인증 구조 외에도 다음 기능 확장을 다룬다.
    • Okta Groups를 활용한 세밀한 권한 제어
    • 엔지니어를 위한 CLI 인증
    • 외부 게스트의 안전한 접근 허용
  • 공통 인증 계층을 기반으로 웹 브라우저뿐 아니라 명령줄 도구와 제한된 외부 사용자 접근까지 동일한 보안 원칙으로 확장하려는 접근이다.

실무에서는 내부 앱마다 인증 기능을 따로 구현하기보다, ALB 같은 공통 진입점과 중앙 IdP, Terraform 모듈을 결합하는 방식이 효과적이다. 특히 네트워크 위치를 신뢰 기준으로 삼지 않고, 강력한 사용자 인증과 중앙화된 그룹·권한 관리를 적용하는 것이 중요하다.

큐레이션 요약을 이어서 읽어보세요.