# AWS External ID 없는 보안

Panther는 AWS 네이티브 애플리케이션이므로 접근 관리에 AWS IAM 역할에 크게 의존합니다. Panther 배포에서는 각 람다 함수의 실행 역할이 작업 수행에 필요한 최소 권한만 갖도록 구성됩니다. 여기에는 고객 계정의 역할을 assume하기 위한 권한이 포함될 수 있습니다.

Panther는 또한 서비스형 소프트웨어(SaaS) 제품입니다. 고객 계정에서 IAM 역할을 assume하는 SaaS 서비스는 전통적으로 보안상의 이유로 외부 ID의 사용을 요구합니다. Panther는 그렇지 않으며, 이로 인해 보안에 민감한 일부 고객들로부터 질문이 제기되었습니다.

Panther는 단일 테넌트 SaaS 제품이므로 외부 ID를 사용할 필요가 없습니다. 즉, 각 고객의 Panther 인스턴스를 전용 AWS 계정에 배포합니다. 귀하의 Panther 계정에 있는 AWS 계정 ID는 외부 ID가 해결하려는 문제에 대한 대안이 됩니다.

### 외부 ID란 무엇이며 어떤 문제를 해결하나요?

[이 AWS 블로그 게시물](https://aws.amazon.com/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/) 은 외부 ID가 무엇인지, 그리고 다중 테넌트 제품에서 문제를 해결하는 데 어떻게 사용되는지 설명합니다. 요약하자면, 외부 ID는 IAM 역할을 assume하기 위한 요청에 추가할 수 있는 정보입니다. 해당 역할의 신뢰 정책은 해당 IAM 역할에 대한 액세스 권한을 부여할 때 어떤 외부 ID를 स्वीकार할지 지정할 수 있습니다(지정은 선택 사항). 외부 ID는 효과적이기 위해 비밀이거나 추측하기 어려울 필요가 없으며, 단지 고유하기만 하면 됩니다.

외부 ID의 주된 기능은 ["혼동된 대리인(confused deputy)" 문제](http://en.wikipedia.org/wiki/Confused_deputy_problem)를 해결하는 것입니다. AWS 맥락에서 “혼동된 대리인” 문제의 기본 개념은 다음과 같습니다. SaaS 서비스 제공자가 여러 고객의 AWS 계정에서 역할을 assume할 수 있는 액세스 권한을 가지고 있다면, 한 고객이 서비스 제공자를 속여 다른 고객의 계정에서 역할을 assume하게 만들 수 있을지도 모릅니다.

### Panther가 교차 계정 역할 접근에 외부 ID가 필요하지 않은 이유

Panther가 외부 ID가 필요 없는 이유는 다중 테넌트 SaaS 제품이 아니기 때문입니다. 모든 Panther SaaS 배포는 하나의 개별 고객을 위한 Panther를 호스팅하는 전용 AWS 계정에 배포됩니다.

Panther가 사용하는 IAM 역할의 신뢰 정책은 어떤 AWS 계정이 해당 역할을 assume할 수 있는지 지정합니다. 각 고객의 Panther 배포는 서로 다른 AWS 계정에 있으므로, 외부 ID와 관계없이 한 고객의 Panther 배포가 다른 고객이 배포한 역할을 assume할 수는 없습니다.

**이는 외부 ID를 사용하는 것보다 훨씬 더 안전합니다**. 설령 고객이 Panther 계정을 완전히 침해하여 해당 데이터 저장소에 직접 접근하고 람다를 실행할 수 있게 되더라도, 다른 고객의 계정을 스캔할 수는 없습니다. 외부 ID가 있는 전통적인 다중 테넌트 모델에서는 SaaS 계정을 완전히 장악하면 조직과 연결된 외부 ID를 단순히 변경할 수 있으므로 다른 고객의 계정에 대한 전체 액세스 권한을 얻게 됩니다.

### 그렇다면 왜 그냥 외부 ID를 추가하지 않나요?

* **실제로는 도움이 되지 않습니다.**
  * 실제로는 고객을 보호하지 못하는 보안의 외양에 불과합니다.
* **추가적인 구성 요소는 복잡성을 더합니다.**
  * 정당한 이유 없이 외부 ID를 추가하면 배포가 중단될 위험이 있습니다. 예를 들어, 외부 ID 버그로 인해 스캐닝/로그 처리가 장기간 사용할 수 없게 되는 경우와 같이 실제 보안 위협이 발생할 수 있습니다. 그 위험은 낮지만 불가능한 것은 아니며, 이러한 외부 ID를 추가하는 것은 아예 두지 않는 것보다 훨씬 더 큰 위험이 됩니다.
* **구조적으로 타당하지 않습니다.**
  * 의미 있는 방식으로 외부 ID를 제대로 지원하려면 Panther 배포에 보안 가치를 추가하지 않는 기능을 지원하기 위해 아키텍처 변경이 필요합니다.

외부 ID에 대해 궁금한 점이 있으면 Panther 지원팀에 문의해 주세요.
