Management API란 무엇인가?
Management API의 정의는 사용 중인 소프트웨어나 서비스에 따라 다를 수 있습니다. 아이덴티티 및 액세스 관리 (IAM) 맥락에서 Management API는 일반적으로 IAM 관련 리소스를 프로그래밍 방식으로 관리할 수 있는 API 세트를 가리킵니다. 예를 들어, 사용자, 애플리케이션, 역할, 권한, 조직 등을 관리할 수 있습니다.
이름이 정확한 구현을 지정하지는 않지만, Management API는 일반적으로 RESTful입니다. 이는 리소스와 이에 수행할 수 있는 작업을 정확하게 정의하는 특성 때문입니다. 예를 들어 POST /users
를 보면, 이 API 호출이 새로운 사용자를 생성할 것이라고 예상할 수 있습니다.
Management API가 중요한 이유
Management API는 IAM 시스템 위, 그러나 사용자 인터페이스 아래에 별도의 추상화 계층을 만듭니다. 이를 통해 개발자는 IAM 리소스 관리를 자동화할 수 있으며, 이는 여러 시나리오에서 특히 유용할 수 있습니다:
1. 자동화
이름이 시사하는 것처럼, Management API는 코드로 리소스를 관리할 수 있게 해주며, 사용자가 인터페이스를 통해 수동으로 클릭하는 대신에 사용할 수 있습니다. 이는 많은 사용자, 애플리케이션 또는 역할을 관리해야 할 때 특히 유용합니다. 예를 들어, CSV 파일에서 사용자를 가져와 올바른 역할과 권한을 할당하는 스크립트를 작성할 수 있습니다.
2. 통합
Management API는 서비스 간 (또는 machine-to-machine) 커뮤니케이션을 위한 표준 방법을 제공합니다. 여러 서비스가 IAM 시스템과 통신해야 할 때, 각 서비스마다 맞춤형 통합을 구현하는 대신, 잘 설계된 Management API를 사용하여 모든 서비스를 위한 API 호출을 조합할 수 있습니다. 예를 들어, 특정 역할 하의 모든 사용자를 나열해야 하는 서비스는 GET /roles/{role_id}/users
호출로 이를 달성할 수 있습니다.
3. 구성 및 기능 확장
비즈니스 요구 사항이 다양함에 따라 IAM 시스템이 복잡한 액세스 제어 요구 사항에서 필요한 모든 정확한 기능을 제공할 수 없을 수 있습니다. Management API는 기본 플랫폼이나 아키텍처를 변경하지 않고 기존 IAM 시스템 위에 맞춤형 기능을 구축할 수 있게 해줍니다.
일상의 예를 들어보면, 최종 사용자가 이메일 주소를 변경해야 하는 상황을 생각해 봅시다. 다른 앱들은 다양한 요구 사항을 가질 수 있습니다:
- 앱 A는 사용자가 새 이메일 주소와 이전 이메일 주소를 모두 확인하도록 요구합니다.
- 앱 B는 사용자가 이메일 주소를 변경하기 전에 기존 비밀번호를 확인하도록 요구합니다.
- 앱 C는 사용자가 기존 비밀번호를 확인하고 관리자가 이메일 변경을 승인하도록 요구합니다.
Management API를 사용하여 이러한 요구 사항을 올바른 순서로 필요한 API 호출을 통해 오케스트레이션하는 맞춤형 서비스를 구축할 수 있습니다. 심지어 Management API와 서비스의 API를 결합하여 복잡한 워크플로우를 달성할 수도 있습니다. 앱 C를 예로 들어 설명해보면:
- 사용자가 앱 C에서 “이메일 변경”을 클릭하고, 앱 C는 서비스에
POST /email-change-requests
요청을 전송합니다. 이 요청은 새로운 이메일 변경 요청을 생성하고 식별자foo
를 반환합니다. - 앱 C는 사용자에게 기존 비밀번호를 입력하라는 대화 상자를 보여줍니다.
- 사용자가 비밀번호를 입력하면, 앱 C는 서비스에
PATCH /email-change-requests/foo
요청을 비밀번호와 함께 전송합니다. 백그라운드에서 서비스는 Management API의POST /users/{user_id}/verify-password
호출을 통해 비밀번호를 확인합니다. - 비밀번호가 올바른 경우, 서비스는 이메일 변경 요청
foo
에 성공적인 확인 기록을 생성합니다. - 관리자 패널에서 관리자는
GET /email-change-requests?status=pending
을 통해 보류 중인 이메일 변경 요청을 볼 수 있습니다. - 관리자가 요청을 승인하면, 관리자 패널은 서비스에
PATCH /email-change-requests/foo
요청을 관리자의 승인과 함께 전송합니다. - 그 후 서비스는 Management API
PATCH /users/{user_id}
를 호출하여 사용자의 이메일 주소를 업데이트합니다. 이메일 주소가 업데이트될 수 없는 경우, Management API는 오류를 반환하며, 서비스는 이에 따라 처리할 수 있습니다.
위의 예에서, 최종 사용자는 Management API와 직접 상호 작용하지 않습니다. 대신, App C와 상호 작용하며, 이 앱이 원하는 워크플로우를 달성하기 위해 백그라운드에서 Management API 호출을 오케스트레이션합니다.
좋은 Management API는 어떻게 생겼을까?
- RESTful: RESTful 원칙을 따라 API가 예측 가능하고 사용하기 쉽게 만듭니다.
- 리소스 지향적: 리소스를 명사로 표현하고 HTTP 메서드를 사용하여 작업을 수행합니다.
- 일관성: 일관된 명명 규칙, 오류 처리 및 응답 형식을 사용합니다.
- 보안성: API를 보호하기 위해 적절한 인증 (Authentication) 및 인가 (Authorization) 메커니즘을 구현합니다.
- 문서화: API 사용 방법, 예제 및 사용 사례를 포함한 명확하고 간결한 문서를 제공합니다.
- 호환성: API의 새로운 버전을 도입할 때 역방향 호환성을 보장합니다.
- 포괄성: IAM 리소스를 효과적으로 관리하기 위한 모든 필수 작업을 포괄합니다.
API 설계 자체가 아닌 인프라와 더 관련되어 있지만, 성능과 확장성과 같은 다른 측면도 고려되어야 합니다. 실무에서는 좋은 Management API가 이러한 측면도 고려해야 합니다.