웹 API 보안

Web API security

웹 API 보안에는 웹 API를 호출하는 프로그램 또는 사용자의 인증이 포함됩니다.

API 통합의 용이성과 더불어 적절한 인증(AuthN)과 인가(AuthZ)를 확보하는 데 어려움이 따릅니다.멀티테넌트 환경에서는 적절한 AuthN 및 AuthZ에 기반한 보안 제어를 통해 API 액세스가 필요한 사용자(및 권한이 있는 사용자)로 제한될 수 있습니다.적절한 AuthN 방식을 사용하면 생산자(API 또는 서비스)는 소비자(클라이언트 또는 콜링 프로그램)를 올바르게 식별하고 액세스레벨(AuthZ)을 평가할 수 있습니다.즉, 소비자는 제시된 자격 증명을 바탕으로 특정 방법(비즈니스 로직)을 호출할 수 있는가?

「인터페이스 설계상의 결함은, 암호 프로세서세계로부터, 각종 임베디드 시스템에 이르기까지, 바이러스 대책 소프트웨어나 operating system [1]자체에 이르기까지, 광범위하게 퍼져 있습니다.」

인증 및 인가 방법

인증 및 인가를 위한 가장 일반적인 방법은 다음과 같습니다.

  1. 정적 문자열:이는 API가 소비자에게 제공하는 비밀번호와 같습니다.
  2. 동적 토큰:이것들은, 발신자가 인증 서비스로부터 취득한 시간 베이스의 토큰입니다.
  3. 사용자 위임 토큰:OAuth[2] 등의 토큰은 사용자 인증에 따라 부여됩니다.
  4. 정책 및 속성 기반 액세스 제어: 정책은 ALFA 또는 XACML 등의 표준을 사용하여 API를 호출하는 방법을 정의하기 위해 속성을 사용합니다.

위의 방법은 다른 수준의 보안과 용이한 통합을 제공합니다.대부분의 경우 가장 쉬운 통합 방법은 가장 취약한 보안 모델도 제공합니다.

정적 문자열

기본 인증 블록 다이어그램

스태틱 문자열 방식에서는 API 발신자 또는 클라이언트는 요청에 토큰으로 문자열을 포함합니다.이 방식은 보통 기본 인증이라고 불립니다.보안 측면에서는 기본 인증이 그다지 만족스럽지 않습니다.즉, 액세스되는 모든 페이지에 대해 사용자 암호를 클리어 텍스트로 네트워크를 통해 전송해야 합니다(SSL과 같은 보안 하위 수준의 프로토콜을 사용하여 모든 트랜잭션을 암호화하지 않는 한).따라서 사용자는 [3]네트워크상의 모든 패킷스니퍼에 매우 취약합니다.

동적 토큰

API가 동적 토큰에 의해 보호되는 경우 토큰에 시간 기반 난스가 삽입됩니다.토큰에는 Time To Live(TTL; 존속 가능 시간)가 있으며, 그 후 클라이언트는 새로운 토큰을 취득해야 합니다.API 메서드에는 시간 체크 알고리즘이 있으며 토큰이 만료되면 요청이 금지됩니다."이러한 토큰의 예로는 JSON Web Token이 있습니다."만료" 청구(만료 시간)는 JWT가 처리를 [4]위해 승인되지 않아야 하는 만료 시간을 나타냅니다.

사용자 위임 토큰

이 유형의 토큰은 응용 프로그램이 사용자 대신 API에 액세스해야 하는 3각 시스템에서 사용됩니다.사용자는 응용 프로그램에 사용자 ID와 비밀번호를 표시하는 대신 응용 프로그램이 API를 호출할 수 있는 사용자 권한을 캡슐화하는 토큰을 부여합니다.

OAuth 2.0 인가 프레임워크에 의해 서드파티 어플리케이션은 자원 소유자와 HTTP 서비스 간의 승인 상호작용을 조정하거나 서드파티 어플리케이션이 [5]스스로 접근을 허용함으로써 HTTP 서비스에 제한적으로 접근할 수 있습니다.

API의 세밀한 인가

아트리뷰트 기반 접근컨트롤

이 접근법에서는 API 자체, API 프레임워크(인터셉터 또는 메시지핸들러) 또는 API에 대한 콜 및/또는 API로부터의 응답을 대행 수신하는 API 게이트웨이(WSO2, Kong ) 중 하나가 있습니다.Policy Decision Point(PDP; 정책 결정 포인트)에 송신하는 인가 요구(통상은 XACML)로 변환합니다.AuthZForce 또는 Axiomatics.정책 Decision Point에는 임의의 수의 사용자, 리소스, 액션 및 컨텍스트속성을 사용하여 허용 또는 거부되는 액세스를 정의할 수 있는 다이내믹액세스 제어를 실장하는 정책이 설정되어 있습니다.정책은 다음과 같습니다.

  1. 자원(예: 은행 계좌)
  2. 사용자(예: 고객)
  3. 문맥(예를 들어 하루 중 시간)
  4. 관계(예: 계정이 속한 고객)

정책은 ALFA 또는 XACML로 표시됩니다.

레퍼런스

  1. ^ "API Attacks" (PDF).
  2. ^ "OAuth 2.0 — OAuth". oauth.net. Retrieved 2015-10-10.
  3. ^ "A Guide to Web Authentication Alternatives: Part 2". unixpapa.com. Retrieved 2015-10-10.
  4. ^ John, Bradley; Nat, Sakimura; Michael, Jones. "JSON Web Token (JWT)". tools.ietf.org. Retrieved 2015-10-10.
  5. ^ Hardt, Dick. "The OAuth 2.0 Authorization Framework". tools.ietf.org. Retrieved 2015-10-11.

외부 링크