참고 자료 · 37

GraphQL API 보안: 권한 부여, 쿼리 비용 및 증거

객체 및 필드 권한 적용, 서버 작업 제한 및 거부 경로 테스트

업데이트됨 · 3 min

도서관 서가의 인터넷과 기술 관련 책 일러스트 · 가상의 장면

이 가이드가 달성하는 목표

  • 노출된 스키마 매핑
  • 권한 실행
  • 쿼리 비용 제한
  • 거부 확인

빠른 확인

  • 한 계정이 다른 계정의 객체를 읽을 수 있습니까?
  • 민감한 필드가 상위 계정의 접근 결정에 따라 처리됩니까?
  • 깊이, 별칭 및 페이지네이션을 함께 사용할 때 비용은 어떻게 됩니까?
  • 오류를 통해 어떤 세부 정보가 유출됩니까?
  • 거부 및 악용 사례를 누가 관찰합니까?

단계별 방법

  1. 1

    작업 목록 작성

    유형, 필드, 변경, 역할, 객체 소유자 및 민감한 데이터 목록을 작성합니다. 현재 클라이언트 쿼리와 거의 사용되지 않는 경로를 포함합니다.

    결과물: 작업, 역할, 객체 및 필드 매트릭스

  2. 2

    각 접근 결정 테스트

    중첩 객체를 포함하여 서로 다른 테스트 계정을 생성하고 객체 ID를 교환합니다. 리졸버는 데이터를 반환하기 전에 권한 부여를 적용해야 합니다.

    결과물: 재현 가능한 허용 및 거부 사례

  3. 3

    바운드 서버 작업

    필드 및 컬렉션의 실제 비용을 측정합니다. 깊이, 범위, 별칭, 페이지네이션, 배치 처리 및 시간을 함께 테스트한 후 적절한 제한을 설정합니다.

    결과물: 비용 정책 및 공격자 쿼리 세트

  4. 4

    불필요한 노출 감소

    컨텍스트에 대한 인트로스펙션 여부를 결정하고, 내부 오류 세부 정보를 숨기고, 클라이언트에게 필요한 정보 이상을 노출하는 필드를 제거합니다.

    결과물: 검토된 공개 구성 및 오류 응답

  5. 5

    신중하게 관찰

    비밀 및 민감한 인수를 제외하고 유용한 기술적 ID, 작업, 비용, 거부 및 상관 관계를 로깅합니다. 경고 담당자를 지정합니다.

    결과물: 대시보드 및 조사 절차

  6. 6

    변경 후 재현

    필드, 역할 또는 클라이언트가 변경될 때 권한 부여 및 로드 케이스를 반복합니다. 수정된 그래프를 통과하는 이전 쿼리를 확인합니다.

    결과물: 회귀 테스트 결과 및 릴리스 결정

관리 지표

지표측정 대상첫 번째 조치
접근 권한객체 및 필드 관련 사례가 예상대로 거부됨리졸버 수정
비용정책에 의해 과도한 쿼리가 억제됨필드 및 제한 조정
오류내부 세부 정보 없이 공개 응답 제공노출되는 세부 정보 감소
회귀 분석변경 후 클라이언트 작업 재실행의도치 않은 오류 차단

일반적인 실수

  • 엔드포인트 접근만 신뢰
  • 깊이 제한은 하지만 범위는 무시
  • 중첩 필드 권한 부여 누락
  • 민감한 데이터가 포함된 인수 로깅

자주 묻는 질문

GraphQL이 일반 API 권한 부여를 없애는가?

아니요. 모든 객체 및 필드 접근에는 여전히 ID 및 컨텍스트 기반 결정이 필요합니다.

인트로스펙션 비활성화로 충분한가?

아니요. 스키마 노출은 줄일 수 있지만 접근 또는 쿼리 비용을 해결하지는 못합니다.

깊이 제한으로 충분한가?

아니요. 별칭, 범위, 목록 및 필드별 비용도 중요합니다.

공식 참조

참조는 방법을 뒷받침합니다. 상황에 맞게 검사를 조정하십시오. 이는 인증이 아닙니다. 원본 참조 제목 및 소스 문서는 다른 언어로 작성되었을 수 있습니다.