반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함

Access Control and Authorization

2012. 9. 5. 11:53 | Posted by 솔웅


Access Control and Authorization


유저의 identity를 얻으면 그 identity 에 근거해서 제한된 모듈을 사용할 수 있도록 하는 authorize 가 가능해 집니다. Authorization은 access control lists에 의해서 이뤄 집니다. 개발자들은 아마 다른 contexts에 더 익숙하시겠죠? 예를 들어 파일 시스템 같은......


Access Control Lists


access control list 는 어떤 리소스에 접근이 가능한 이들을 정의해 놓은 rule들을 열거한 겁니다. (ALLOW rules) 물론 그 리소스에 어떤 이들의 접근을 막을지에 대해서도 정의해 놓을 수 있겠죠. (DENY rules). 룰들은 유저와 그룹별로 정의 될 수 있습니다. 여러분 사이트의 필요에 따라 혼합하거나 해서 사용하실 수 있습니다.


Access control lists SITE_DIR/config/acls.ini  (site authorization)나 SITE_DIR/config/MODULE/acls.ini (module authorization)에 정의 돼 있습니다. 


만약 그 site 에 access control list entry가 있다면 (in SITE_DIR/config/acls.ini), 이 조건은 모든 모듈에 적용이 될 겁니다. site가 아니라 module 이 access control list entry 를 가지고 있다면 (in SITE_DIR/config/MODULE/acls.ini), acl 룰에 맞는 유저만이 접근할 수 있게 됩니다.


아래와 같은 경우에 유저는 접근 권한을 가질 겁니다.


  • They match an ALLOW rule, AND
  • They do NOT match a DENY rule


만약 유저가 DENY 룰에 속하면 즉각 접근 제한이 됩니다.

이 Access control lists 는 Administration Console에서 수정될 수 있습니다.




Syntax of Access Control Lists


각각의 ACL은 acls.ini 파일에 있는 section입니다. 첫번째 ACL은 section 0 가 되고 두번째는 1 이 됩니다. 각 섹션은 key들을 가지고 있습니다.


  • type: Either U (for user access, i.e. who can use the module), or A (for admin access, who can administer the module).
  • action: Either A (allow) or D (deny). Deny rules always take precedence.
  • scope: Either U (user), G (group) or E (everyone, i.e. ALL users, including anonymous users),
  • authority: The index of the authority. For user scope this can be blank and would match a user from any authority.
  • value: The particular user/group to match. For user scope this can be “*” which would match all authenticated users.


이 신택스를 구현하는 방법을 이해하시려면 아래 예제를 보세요.

admin 모듈에 대해 만드려면 아래와 같이 될 겁니다.



[0]
type = "U"
action = "A"
scope = "G"
authority = "ldap"
value = "admin"

[1]
type = "U"
action = "A"
scope = "G"
authority = "ad"
value = "domainadmins"

[2]
type = "U"
action = "D"
scope = "U"
authority = "ad"
value = "Administrator"



이 의미는 ldap authority 의 admin 그룹의 멤버들과 ad authority 의 domainadmin 그룹들에게 접근이 허용 될 겁니다.  그리고 특별히 ad authority의 Administrator 그룹에는 접근이 허용되지 않습니다.


Using the Flat-file Authority to extend other authorities


flat file authority 인 PasswdAuthentication는 다른 시스템이 아닌 웹서버에 저장돼 있는 flat-file을 사용해서 유저나 그룹들에게 접근을 허용할 수 있습니다. 이 경우는 유저가 적어서 굳이 authority 시스템을 관리하느라 시간을 낭비하고 싶지 않은 경우에 유용하게 사용 될 수 있습니다.


그리고 데이터베이스 서버(혹은 SQLite)가 있고 여러분이 그것을 관리하고 있다면 이 데이터베이스에 저장된 값을 가지고 사용하는 DatabaseAuthentication authority 도 사용할 수 있습니다.



이러한 방법들에 대해 좀 더 알고 싶으시면 instruction을 참조하세요. 유저 login을 사용하고 싶지 않다면 USER_LOGIN을 NONE으로 세팅해 놓으세요.



반응형

Comment