2012-05-01 2 views
2

상황의견 모색 : 인스턴스 수준의 보안

  1. 판매 목록 항목
  2. 가 작업 항목 :: setPrice
  3. 항목 또는 고객 서비스 담당자의 판매자가되는 상거래 시장을위한 건축 청사진을 항목의 가격을 변경할 수 있습니다.
  4. # 3에 대한 보안 검사는 항목의 데이터 액세스 계층에 가깝게 구현되어 보안 검사의 적용 범위를 최대화합니다.

부지의 사람들의는 직교 우려으로 보안에 대해 이야기를 좋아하지만 난 (현재?)하지 그 보드에 그는 가차없이 도메인 모델에 연결되어 있기 때문에 인스턴스 레벨의 보안에 대해 생각하고, 특히 . 결론은, 사실 을 선호하는데 # 3의 보안 불변식이 코드 (코드 또는 Spring Security EL 주석을 통해)에 명시 적으로 명시되어야합니다. 이러한 보안 불변성은 비즈니스 로직의 일부로 간주됩니다. 나는 또한 개발자의 얼굴에 보안을 원한다. IMO의 직무와 직결되지 않습니다.

@PreAuthorize("hasRole('CSR_ITEM_WRITER') or #item.seller.id == principal.id') 
public void setPrice(Item item, Money price) { ... } 

나는 그것이 보안 모델을 진화에 관해서 (그러나 나쁜 일이 잘못지고의 영향을 고려한다는 것입니다 때이 경직성의 일정 금액을 생성 실현 : 내가 좋아하는 뭔가를 작성할 수 있습니다

?)

우리는 CS 담당자가 판매자가되어야하는 접근법에 대해서도 논의했습니다. 특정 청결 함이 있습니다 (실제로 보안 모델은 유스 케이스가 아닌 도메인 주위에 집중되어 있습니다). (N.B. 누군가가 다른 사람을 대신하여 행동 할 때이를 감지하기에 충분한 감사가 이루어짐)

의견?

답변

0

정확하게 생각하고 있습니다. 보안이 직각의 관심사라고 할 때 무엇에 직각입니까? 이것이 비즈니스 논리의 일부가되어야한다고 말하면 110 %의 권리가 있습니다.

필자는 REP와 판매자를 구분할 것입니다. 두 가지 모두 고유 한 역할입니다. 이 특별한 경우에 중복이 발생합니다.

이 컨텍스트에서 보안에 대한 중요도가 주어지면 옵션에 첨부 된 역할에 따라 적절한 결과를 보여주는 단위 테스트의 폭풍우를 작성해야합니다.

0

나는 당신이하고있는 것이 좋은 생각이라고 생각한다 (나는 현재 비슷한 것을하고있다).

나는 그것이 일반 주석을 통해 몇 가지 장점이 있기 때문에 훨씬 더 전역으로

  1. 보안 메커니즘을 쉽게 변경할 수 있습니다 (here 참조) 봄 보안에 PermissionEvaluator 구성 요소를 살펴 당신을 조언 것
  2. 감사 로그/모니터링을 통해 보안 평가를 쉽게 확장 할 수 있습니다.
  3. 평가자 구현 테스트 장치 (주석 작동하려면 실행중인 스프링 컨텍스트 필요하므로 그들은 단지 통합 테스트에서 테스트 할 수 있습니다) 될 수

지금까지 나는이 아이디어의 직접적인 단점을 발견했다.