기술프로파일 - Korean Access Federation (KAFE) - 조진용, 장희진 coreen@kreonet.net 한국과학기술정보연구원
목 차 제 1 장 SAML 기술표준제 2 장프로토콜제 3 장사용자속성 (Attribute) 정보제 4 장메타데이터제 5 장서비스탐색제 6 장기술지원제 7 장인증서의사용제 8 장보안부록
기술프로파일 [ 최근갱신 : 2016-10-30 v1.0] 2015. 08. 20. - 초안 제 1 장 SAML 기술표준 KAFE 에서이용되는 SAML(Security Assertion Markup Language) 표준은 OASIS 보안서비스기술위원회 (Security Services Technical Committee) 에서규정한다음의표준에기초하고있다. 본운용정책은시험페더레이션기간에한해적용하며정식서비스시행시수정될수있다. 1.1 절 SAML v2.0 Core SAML v2.0 표준준수를위해필요한기술적요구사항을규정하고있다. (http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf) 1.2 절 SAML v2.0 Profiles 시스템들간에이용되는식별자, 바인딩지원, 인증서와키들의이용을규정하고있다. (http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf) 1.3 절 SAML v2.0 Metadata 메타데이터의표준표기법작성규칙을규정하고있다. (http://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf) 제 2 장프로토콜 본지침은 KAFE 에참여하는 ID 제공자또는서비스제공자 ( 이하엔터티 ) 들이가급적넓은범주의서비스를제공하고활용할수있도록설계되어있다. 이를위해, KAFE 에참여하는모든엔터티들은 KAFE 에서규정한표준프로토콜의이용을권고한다. 표준프로토콜은인증요청과인증응답에대한필요사항들을반드시만족해야한다. KAFE 는표준프로토콜의준수를위해 simplesamlphp SAML2.0 소프트웨어의이용을권장한다. 2.1 절 Authentication Request HTTP-bound SAML 프로토콜의인증요청 (Authentication Request) 메시지는 SAML 기술표준 "SAML 2 Profiles" 4.1.3 및 4.1.4 에정의된 Web Browser SSO 프로파일이충족되도록구현해야한다. 2.2 절 Authentication Response
SAML assertions 를포함하는 HTTP-bound 인증응답 (Authentication Response) 메시지들은 "SAML 2 Profiles" 4.1.3 및 4.1.4 에정의된 Web Browser SSO 프로파일이충족되도록구현해야한다. 또한 SAML 응답메시지또는 SAML assertion 중하나는서명되고, SAML assertion 은암호화할것을권고한다. 2.3 절 simplesamlphp simplesamlphp 는 SAML 소프트웨어패키지이다. simplesamlphp 는 UNINETT 에의해개발관리되고있다 (simplesamlphp.org). 최신버전의 simplesamlphp 이용을권장한다. [ 조항수정 2016.10.30.] 제 3 장사용자속성정보 사용자속성정보는사용자의권한을부여하기위해개별엔터티들이이용하는정보이다. KAFE 에서사용되는속성정보는본문서의부록 " 지원되는속성정보목록 " 을참조한다. 3.1 절속성정보의이용 [ 권고 ] KAFE 에정의된모든사용자속성정보는고유 URI 를가지고있다. 각엔터티들은본문서의부록 " 지원되는속성정보목록 " 에서사용자속성정보를선택하여이용하는것을권장한다. 만약이용하려는속성이 " 지원되는속성정보목록 " 에존재하지않는경우각엔터티는 KAFE 에새속성의추가를신청할수있다. 신청된새속성정보는 KAFE 에서검토하고 " 지원되는속성정보목록 " 에편입여부를결정한다. KAFE 에참여하지않는경우, " 지원되는속성정보목록 " 에명시된속성이외의속성정보들을이용할수있다. 3.2 절속성정보의신뢰성 [ 권고 ] ID 제공자는제공중인사용자속성정보에대한신뢰성을보장해야한다. ID 제공자기관의내부구성원이아닐경우속성정보를보장하지않을수있다. 하지만서비스제공자에대한불법적, 악의적접근을방지하기위해해당사용자에대한속성관리를수행해야한다. 3.3 절속성정보의확인 [ 권고 ] 서비스제공자는제공받은모든속성정보들이신뢰할수있는기관 (Trusted Authority) 에서전달받은것인지검증할수있는방법을확보해야한다. 3.4 절속성정보의등급및저장기간 [ 필수 ] 서비스제공자는속성정보의등급을사용자에게명시해야한다. 등급은 필수 (required), 권장 (recommended), 선택 (optional) 으로분류하고이용목적과함께명확하게기재해야한다. 서비스제공자는속성정보를저장할경우저장기간에대해명확하게기재해야한다.
3.5 절사용자의소속범위 [ 필수 ] 속성정보를제공할사용자의소속범위 ( 즉, shibmd:scope) 는 EntityID 에기록된도메인의범위와일치해야한다. 예를들어, EntityID 의도메인정보가 info.school.ac.kr 일경우, ID 제공자는정보통신공학과에소속된사용자의속성정보만제공해야한다. 서비스제공자는 ID 제공자의메타데이터에포함된사용자속성의범위와 SAML assertion 에기재되어있는범위를비교하여제공되는범위를판단해야한다. [ 조항수정 2016.10.30.] 3.7 절 edupersontargetedid 의규격 [ 필수 ] edupersontargetedid 는 Qualifier, SPQualifier, Opaque ID 를포함한다. 다음규격을준수한다. edupersontargetedid <saml:id xmlns:saml="urn:oasis:names:tc:saml:2.0:assertion" Qualifier="[IDP 의 entityid]" SPQualifier="[SP 의 entityid]"> [opaque ID]</saml:ID> [ 조항추가 2015.9.17.] 제 4 장메타데이터 KAFE 는다음에규정된메타데이터를이용한다. 4.1 절메타데이터의규격 [ 필수 ] SAML v2.0 메타데이터규격 (SAML v2.0 Metadata) 에따라야한다. 4.2 절메타데이터의종류 [ 필수 ] KAFE 는다음두종류의메타데이터를이용한다. 1. 엔터티메타데이터개별엔터티들이 KAFE 에제출한메타데이터로, 각엔터티들에대한정보를포함 2. 페더레이션메타데이터 KAFE 에의해생성된메타데이터로, KAFE 에참여하는모든엔터티들의메타데이터를포함 4.3 절엔터티메타데이터의제출
[ 필수 ] KAFE 에 참여하는 모든 기관들은 제공자 엔터티들에 대한 엔터티 메타데이터를 KAFE 에 제출해야한다. 4.4 절엔터티메타데이터의내용 [ 필수 ] KAFE 에참여하는기관의서버임을인정하는서버인증서를갱신하거나기관의메타데이터를변경했을경우, 해당기관은 KAFE 에최신메타데이터파일을반드시제출해야한다. [ 권고 ] 메타데이터에개인정보의입력이필요한부분은예를들어, 운용담당자의 email 주소등, 가급적개인정보가나타나지않도록할것을권장한다. [ 필수 ] KAFE 에제출된엔터티메타데이터는내부에포함된개인정보를포함해웹에공개된다. 따라서운용책임자는엔터티메타데이터의제출시또는신청시에엔터티메타데이터에포함된개인정보에대해함께공개한것으로간주하며개인정보의제 3 자제공에동의한것으로간주한다. 개별기관에서제출한메타데이터정보는다음과같은목적에이용된다. 엔터티메타데이터에포함된항목들의검증 KAFE 의관리운영 페더레이션메타데이터의추가및갱신 KAFE 회원기관에대한페더레이션메타데이터의배포또는 Web 을통한공개 탐색서비스 (Discovery Service), ID 제공자, 서비스제공자의등록 4.5 절엔터티메타데이터의제공기관관련요소 [ 필수 ] ID 제공자는 KAFE 에제출하는엔터티메타데이터에제공기관관련요소에다음의사항을기재해야한다. 기관내에여러개의엔터티들이존재할경우각엔터티들을구분할수있어야한다. Organization 예 : <md:organization xml:lang="en">name</md:organization> OrganizationDisplay: 예 : <md:organizationdisplay xml:lang="en">name</md:organizationdisplay> OrganizationURL 예 : <md:organizationurl xml:lang="en">http://www.kreonet.net/</md:organizationurl> ContactPerson 예 : <md:contactperson contacttype="technical">
<md:given></md:given> <md:sur></md:sur> <md:emailaddress></md:emailaddress> </md:contactperson> SecurityContact 예 : <md:contactperson contacttype="other"> <md:given></md:given> <md:sur></md:sur> <md:emailaddress></md:emailaddress> </md:contactperson> [ 조항수정및추가 2016.10.11.] 4.6 절엔터티메타데이터의 Scope 설정 [ 권고 ] ID 제공자는사용자소속정보의 scope 를기재한다. Scope 예 : <shibmd:scope xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" regexp="false"> kreonet.net</shibmd:scope> [ 조항수정 2016.1.6.] 4.7 절엔터티메타데이터의개인정보보호정책고지관련 [ 필수 ] 서비스제공자는개인정보처리방침을고지하고엔터티메타데이터에고지 URL 을기재해야한다. 고지되는개인정보처리방침은대한민국개인정보보호법을준수해야한다. PrivacyStatementURL 예 : <mdui:privacystatementurl xml:lang="ko"> [URL] </mdui:privacystatementurl> [ 조항수정 2015.11.18.] 4.8 절엔터티메타데이터의엔터티 ID [ 권고 ] 엔터티메타데이터의 EntityID 는다음의규정을따른다. 예를들어, ID 제공기관인 my.school.ac.kr 에서 simplesamlphp 소프트웨어를이용할경우 https://my.school.ac.kr/idp/simplesamlphp 로 EntityID 를정의한다. [ 기관 URL]/[IdP 또는 SP]/[SAML 2.0 소프트웨어 ] 4.9 절페더레이션메타데이터의제출및공개
KAFE 는제출된모든엔터티메타데이터를검증한후, 페더레이션메타데이터에추가한다. [ 필수 ] 제출된메타데이터는모든회원기관에공개된다. 페더레이션메타데이터의유효기간의 4 일이고, validuntil 속성에기재된다. 페더레이션메타데이터그룹의이름과공개 URL 은다음과같다. 테스트페더레이션 - = "KAFE-testfed - 공개 URL https://fedinfo.kreonet.net/signedmetadata/federation/kafe-testfed/metadata.xml 프로덕션페더레이션 - = KAFE-profed - 공개 URL https://fedinfo.kreonet.net/signedmetadata/federation/kafe-profed/metadata.xml 페더레이션메타데이터는 " 페더레이션메타데이터의제출및발간 " 의공개 URL 을통해다운로드받아설치한다. [ 조항수정 2015.11.18.] 4.10 절페더레이션메타데이터의갱신 [ 권고 ] 오래된페더레이션메타데이터를이용할경우, 다른사이트에대한접속불가및보안등급의하락등이발생할수있다. KAFE 회원기관은페데레이션메타데이터를주기적으로업데이트해야한다. 페더레이션메타데이터에기재된 validuntil 속성값의만료일이전에페더레이션메타데이터가갱신되어야한다. 4.11 절페더레이션메타데이터의검증 [ 권고 ] KAFE 회원기관은 7.2 절의내용을참고해다운받은페더레이션메타데이터의유효성을검증해야한다. 제 5 장탐색서비스 [ 조항추가 2015.11.9.] KAFE 는모든엔터티들이최적의방법으로인증정보를확인하기위해탐색서비스 (Discovery service) 를제공할예정이다. 서비스 URL( 제공예정 ) 은다음과같다. 서비스 URL = https://ds.kreonet.net/kafe [ 조항수정 2016.10.30.]
제 6 장기술지원 KAFE 에참여하는개별엔터티들은본문서에서규정한표준을따르는어떠한 SAML 소프트웨어라도사용할수있다. SAML ID 제공자와서비스제공자를구성하기위해필요하면 KAFE 에서기술지원이가능하다. 상용제품에대해서는기술지원을하지않는다. 제 7 장인증서의사용 KAFE 는각엔터티의신뢰성을담보하기위해인증서를이용한다. 7.1 절페더레이션메타데이터서명용인증서 [ 권고 ] KAFE 는게시, 배포하는페더레이션메타데이터에대해자체서명인증서 (Self-signed certificate) 를이용해서명한다. 서명에사용할인증서내용은각기관이페더레이션메타데이터의서명을검증할목적으로 KAFE 에서안전하게배포해야한다. KAFE 는해당서명인증서를웹을통해배포할수있다. 페더레이션메타데이터에이용된서명인증서의배포 URL 은다음과같다. 배포 URL https://fedinfo.kreonet.net/cert [ 조항추가 2015.11.9.] 7.2 절페더레이션메타데이터서명용인증서의검증 [ 필수 ] 서명용인증서의 fingerprint 가다음과같지않을경우, 개별엔터티는해당서명용인증서를이용해서는안된다. Fingerprint (SHA-256) =93:36:C1:7C:F7:61:AB:3C:41:81:63:AA:82:71:C6:6A:31:B2:D8:0A:E1:F1:0A:C0:7D:0F:8D:29:09:6D:0 3:59 최신 fingerprint 값과확인방법은다음웹사이트에서확인할수있다. 배포 URL = https://coreen.kreonet.net/join [ 조항추가 2016.10.30.] 7.3 절 Certificate Authority
[ 권고 ] Certificate Authority(CA) 에서발급받은인증서는상호호환성의문제를야기할수있으므로사용을권장하지않는다. [ 조항추가 2015.11.9.] 7.4 절 Certificate Authority [ 필수 ] 개인키가분실되었거나유출되었을경우에는즉시 KAFE 에통보하여야하고해당인증서를폐기해야한다. 또한새로운인증서를즉시재발급받아야한다. 제 8 장보안 [ 조항추가 2015.11.9.] [ 필수 ] 보안관리를위해모든참여엔터티들은다음사항을반드시준수해야한다. 8.1 절사용자의신원정보관리 [ 필수 ] 제공되는모든사용자의신원정보는실제사용자의정보와일치해야한다. 각엔터티의사용자신원정보는유효기간이종료된후또는사용자의서비스이용의사철회가있는경우지체없이삭제되어야한다. 8.2 절사용자 ID 의재사용 [ 권고 ] 사용중이거나이미사용되었던 uid, edupersonprincipal, edupersontargetedid 가다른사용자에게할당되기위해서는마지막사용일로부터적어도 12 개월이상지나야한다. 8.3 절서비스제공자의사용자 ID 이용 [ 필수 ] 서비스제공자는중복된사용자 ID 를갖는사용자들을구분가능하도록충분한기술적조치를강구해야한다. 8.4 절개인정보의저장및목적고지 [ 권고 ] 개인정보의보호, 개인정보의유지, 개인정보의유출방지를위해, 서비스제공자는꼭필요한경우가아니면사용자정보를저장하지않아야한다. [ 필수 ] 서비스제공을위해사용자의개인정보를저장할경우, 개인정보의수집목적, 항목, 보유및이용기간, 거부권및불이익등이사용자에게고지되어야한다. 8.5 절개인정보제공에대한사용자동의 [ 필수 ] 사용자의개인정보가처리될때, 개인정보의전송시, 개인정보의이용고지, 이용목적, 사용자동의를얻는절차가반드시제공되어야한다.
[ 필수 ] 각엔터티는사용자동의없이제 3 자에게개인정보를제공할수없다. 개인정보의제 3 자제공을위해서는필수고지항목 ( 제공받는자, 목적, 항목, 보유및이용기간, 거부권및불이익 ) 을사용자에게고지하고정보주체의사전동의를받아야한다. 8.6 절로그파일의저장 [ 필수 ] 서비스에대한접근로그 (acess log) 는최소 6 개월이상저장되어야한다. 8.7 절회원기관의책임 [ 필수 ] KAFE 에참여하는회원기관은상호협력하여 ID 페더레이션을실현하도록한다. 각회원기관은송신하는정보의신뢰성이나정확성을확보하기위한의무를갖는다. 고의또는중대한과실에의한경우를제외하고전송한정보의신뢰성이나정확성이미비하여발생한손해에대해서는회원기관이책임을지지않는다. KAFE 와별개로, 참여기관간별도의협정 (agreement) 에의해개별엔터티들의책임에대해서명문화할수있다
부록 권장속성정보목록 - 1. uid uid urn::0.9.2342.19200300.100.1.1 computer system login names RFC4519 String Single value 예 ; "s9709015", "admin", and "student" 2. edupersontargetedid edupersontargetedid urn::1.3.6.1.4.1.5923.1.1.1.10 사용자가명 ( 가독불가 ) eduperson Object Class Specification 최대 256 바이트, 서비스제공자마다다른 persistent ID를제공 Multiple 예 ; "Kxxl8QLncKbguy5xjNLRSkdBc12=" 3. sn sn urn::2.5.4.4 성 (family name) RFC4519 String Multiple 예 ; Hong
4. given given urn::2.5.4.42 이름 (first name) RFC4519 String Multiple 예 ; Gil-dong 5. display display urn::2.16.840.1.113730.3.1.241 화면표시이름 RFC2798(inetOrgPerson) String Single value 예 ; "Kildong Hong" 6. mail mail urn::0.9.2342.19200300.100.1.3 Email 주소 RFC2798(inetOrgPerson) string@domain, 최대256 바이트 Single value 예 ; "kildong_hong@kafe.or.kr" 7. edupersonaffiliation edupersonaffiliation
urn::1.3.6.1.4.1.5923.1.1.1.1 사용자직무형태 eduperson Object Class Specification "faculty", "staff", "student", "member", "employee", none Multiple 상위 6개직무타입이값이된다. 필요할경우타입을추가할수있다. 예 ; "staff, member" 8. organization organization urn::2.5.4.10 기관명 RFC4519 String Single value 예 ; "KISTI", "Korean Access Federation" 9. schachomeorganization schachomeorganization urn::1.3.6.1.4.1.25178.1.2.9 기관의도메인이름 RFC1035 String Single value 예 ; "KISTI", "kafe.or.kr" 10. schachomeorganizationtype schachomeorganizationtype urn::1.3.6.1.4.1.25178.1.2.10 기관형태
SCHAC String Mutiple value urn:schac:homeorganizationtype:<country-code>:<string> 예 ; urn:schac:homeorganizationtype:kr:university urn:schac:homeorganizationtype:kr:vho 11. edupersonprincipal edupersonprincipal urn::1.3.6.1.4.1.5923.1.1.1.6 도메인내사용자식별정보 eduperson Object Class Specification [unique and persistent identifier]@scope Single value 예 ; "kildong-home2015@kafe.or.kr" 12. edupersonscopedaffiliation edupersonscopedaffiliation SAML2: urn::1.3.6.1.4.1.5923.1.1.1.9 기관내사용자직무형태 eduperson Object Class Specification String@scope Multiple 예 ; "staff@kafe.or.kr" 13. edupersonentitlement edupersonentitlement SAML2: urn::1.3.6.1.4.1.5923.1.1.1.7 자원에대한권한 (right) 을나타내는 URI (URL 또는 URN) eduperson Object Class Specification
String Multiple 예 ; "http://xstor.com/contracts/hed123", "urn:mace:k.ac:confocalmicroscope" [ 조항추가 2016.7.19]