• Keine Ergebnisse gefunden

Einbettung einer lokalen Software eines Föderationsmitgliedes zur Bereitstellung in einem Föderationsumfeld (DFN-AAI)

N/A
N/A
Protected

Academic year: 2022

Aktie "Einbettung einer lokalen Software eines Föderationsmitgliedes zur Bereitstellung in einem Föderationsumfeld (DFN-AAI)"

Copied!
80
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einbettung einer lokalen Software eines

Föderationsmitgliedes zur Bereitstellung in einem Föderationsumfeld (DFN-AAI)

Bachelorarbeit im Studiengang Informatik

Fabian Mangels <fabian@mangels.it>

Bremerhaven, 20.02.2019

(2)

Gliederung

1

Einleitung

2

Grundlagen

3

Vorhandene Komponenten

4

Praktische Umsetzung

5

Fazit und Ausblick

(3)

Einleitung

(4)

Herausforderungen

• Zunehmende Menge an digitalen Forschungsdaten – viele sogar einzigartig

• Bedarf an Rechenleistung steigt

• Daten- und Informationsaustausch in einem internationalen Forschungsumfeld

• Lösung: International vernetzte Forschungsdateninfrastruktur

• Helmholtz-Datenföderation (HDF)

• Deutsches Forschungsnetz (DFN)

• Vertrauensvolle Infrastruktur bzw. Föderation – DFN-AAI

• Föderatives Identitätsmanagement (FIM)

(5)

Herausforderungen

• Zunehmende Menge an digitalen Forschungsdaten – viele sogar einzigartig

• Bedarf an Rechenleistung steigt

• Daten- und Informationsaustausch in einem internationalen Forschungsumfeld

• Lösung: International vernetzte Forschungsdateninfrastruktur

• Helmholtz-Datenföderation (HDF)

• Deutsches Forschungsnetz (DFN)

• Vertrauensvolle Infrastruktur bzw. Föderation – DFN-AAI

• Föderatives Identitätsmanagement (FIM)

Fabian Mangels Hochschule Bremerhaven 2

(6)

Szenario

• Bereitstellung einer lokalen Ressource in einer Föderation (DFN-AAI)

• „Benötigte Komponente“ wurde im Zuge der Ausarbeitung erstellt

SP-IdP-Proxy als Einstiegspunkt für den Fremdnutzer

Abbildung 1: Vereinfachter Überblick des Szenarios

(7)

Grundlagen

(8)

Identitätsmanagement (IdM)

„Identitätsmanagement liefert die notwendigen Grundlagen zu jedweder Form von personalisiertem und berechtigtem Zugriff auf schützenswerte Ressourcen, Dienste und Systeme und bildet somit einen elementaren Baustein des IT-Sicherheitsmanagements“

[JD08, S. 225].

Grundlegende Konzepte:

• Authentifizierung

• Autorisierung

Zentrale Bestandteile des IdMs:

• Digitale Identitäten einer Entität

• Identitätsspeicher

• Integration von Identitätsspeichern

• Identitätsmanagement-Prozesse

(9)

Identitätsmanagement (IdM)

„Identitätsmanagement liefert die notwendigen Grundlagen zu jedweder Form von personalisiertem und berechtigtem Zugriff auf schützenswerte Ressourcen, Dienste und Systeme und bildet somit einen elementaren Baustein des IT-Sicherheitsmanagements“

[JD08, S. 225].

Grundlegende Konzepte:

• Authentifizierung

• Autorisierung

Zentrale Bestandteile des IdMs:

• Digitale Identitäten einer Entität

• Identitätsspeicher

• Integration von Identitätsspeichern

• Identitätsmanagement-Prozesse

Fabian Mangels Hochschule Bremerhaven 4

(10)

Identitätsmanagement (IdM)

„Identitätsmanagement liefert die notwendigen Grundlagen zu jedweder Form von personalisiertem und berechtigtem Zugriff auf schützenswerte Ressourcen, Dienste und Systeme und bildet somit einen elementaren Baustein des IT-Sicherheitsmanagements“

[JD08, S. 225].

Grundlegende Konzepte:

• Authentifizierung

• Autorisierung

Zentrale Bestandteile des IdMs:

• Digitale Identitäten einer Entität

• Identitätsspeicher

• Integration von Identitätsspeichern

• Identitätsmanagement-Prozesse

(11)

Identitätsverteilung

• Verwirklichung organisationsübergreifender Geschäftsprozesse

• Sicherer und vertrauensvoller Austausch von Daten und digitaler Identitäten

• Föderatives Identitätsmanagement (FIM)

„Lokal authentifizieren, global autorisieren“ [ABB

+

18, vgl. S. 4f.].

Kernkomponenten des verteilten Ansatzes:

• Entität

• Client

• Identitätsanbieter (IdP)

• Diensteanbieter (SP)

Single Sign-on , Single Log-out

• Nutzerzentriertes Identitätsmanagement

Fabian Mangels Hochschule Bremerhaven 5

(12)

Identitätsverteilung

• Verwirklichung organisationsübergreifender Geschäftsprozesse

• Sicherer und vertrauensvoller Austausch von Daten und digitaler Identitäten

• Föderatives Identitätsmanagement (FIM)

„Lokal authentifizieren, global autorisieren“ [ABB

+

18, vgl. S. 4f.].

Kernkomponenten des verteilten Ansatzes:

• Entität

• Client

• Identitätsanbieter (IdP)

• Diensteanbieter (SP)

Single Sign-on , Single Log-out

• Nutzerzentriertes Identitätsmanagement

(13)

Identitätsverteilung

• Verwirklichung organisationsübergreifender Geschäftsprozesse

• Sicherer und vertrauensvoller Austausch von Daten und digitaler Identitäten

• Föderatives Identitätsmanagement (FIM)

„Lokal authentifizieren, global autorisieren“ [ABB

+

18, vgl. S. 4f.].

Kernkomponenten des verteilten Ansatzes:

• Entität

• Client

• Identitätsanbieter (IdP)

• Diensteanbieter (SP)

Single Sign-on , Single Log-out

• Nutzerzentriertes Identitätsmanagement

Fabian Mangels Hochschule Bremerhaven 5

(14)

Vorhandene Komponenten

(15)

SAML i

Security Assertion and Markup Language

• Transport von Authentifikations- und Autorisierungsinformationen im browserbasierten Umfeld

• XML-Standard, der von OASIS im Mai 2002 spezifiziert wurde

• Bestandteile des XML- Frameworks :

Assertions

– Authentisierungs-, Autorisierungs- oder Attributaussagen

Protocols

– Anfrage- und Antwortprotokolle für die Übermittlung der Assertions

Bindings

– Abbildung des SAML-Protokolls auf Nachrichten- und Kommunikationsprotokolle

Profiles

– Zusammenspiel von

Assertions

,

Protocols

und

Bindings

(Randbedingungen)

Fabian Mangels Hochschule Bremerhaven 6

(16)

SAML i

Security Assertion and Markup Language

• Transport von Authentifikations- und Autorisierungsinformationen im browserbasierten Umfeld

• XML-Standard, der von OASIS im Mai 2002 spezifiziert wurde

• Bestandteile des XML- Frameworks :

Assertions – Authentisierungs-, Autorisierungs- oder Attributaussagen

Protocols – Anfrage- und Antwortprotokolle für die Übermittlung der Assertions

Bindings – Abbildung des SAML-Protokolls auf Nachrichten- und Kommunikationsprotokolle

Profiles – Zusammenspiel von Assertions , Protocols und Bindings (Randbedingungen)

(17)

SAML ii

1 < s a m l 2 : A t t r i b u t e S t a t e m e n t >

< s a m l 2 : A t t r i b u t e FriendlyName ="cn" Name="urn:oid:2.5.4.3" NameFormat="

urn:oasis:names:tc:SAML:2.0:attrname -format:uri">

3 < s a m l 2 : A t t r i b u t e V a l u e > Fabian Mangels </ s a m l 2 : A t t r i b u t e V a l u e >

</ s a m l 2 : A t t r i b u t e >

5 < s a m l 2 : A t t r i b u t e FriendlyName ="mail" Name="urn:oid:0.9.2342.19200300.100.1.3"

NameFormat="urn:oasis:names:tc:SAML:2.0:attrname -format:uri">

< s a m l 2 : A t t r i b u t e V a l u e > f a b i a n . mangels@awi . de</ s a m l 2 : A t t r i b u t e V a l u e >

7 </ s a m l 2 : A t t r i b u t e >

< s a m l 2 : A t t r i b u t e FriendlyName ="sn" Name="urn:oid:2.5.4.4" NameFormat="

urn:oasis:names:tc:SAML:2.0:attrname -format:uri">

9 < s a m l 2 : A t t r i b u t e V a l u e > Mangels </ s a m l 2 : A t t r i b u t e V a l u e >

</ s a m l 2 : A t t r i b u t e >

11 </ s a m l 2 : A t t r i b u t e S t a t e m e n t >

Listing 1: SAML-Assertion – AttributeStatement

Fabian Mangels Hochschule Bremerhaven 7

(18)

LDAP

Lightweight Directory Access Protocol

• Protokoll um mit Verzeichnisdiensten (Identitätsspeicher) zu operieren

• Internetstandard, wird von der IETF fortlaufend weiterentwickelt

• RFC 4510, 4511

Abbildung 2: Verwendeter LDAP-Namensraum (DIT)

(19)

DFN-AAI i

Authentication and Authorization Infrastructure

• Infrastruktur für Attributaustausch und Identitätsfeststellungen jener Entität

• DFN-Verein als Föderationsbetreiber

• Aktive Teilnahme erfordert mind. einen IdP und die Einhaltung der Policies (Verlässlichkeitsklassen)

Shibboleth als IdP / SP

• Vetrauen durch signierte Metadaten an zentraler Stelle

Fabian Mangels Hochschule Bremerhaven 9

(20)

DFN-AAI ii

Abbildung 3: Grundlegende SSO-Interaktion in der DFN-AAI [Pem18b, vgl. S. 11]

(21)

DFN-AAI iii

Abbildung 4: SAML 2.0 — Single Sign-on [HCH

+

05, WC08, vgl. S. 15, S. 8]

(22)

Shibboleth

Open Source -Software

• IdP / SP im SAML-Kontext

• Entwicklung erfolgt durch das Internet2 -Projekt und OASIS seit 2000

Shibboleth als Synonym für SAML-basiertes Web-SSO

• Bereitstellung von Attributen, Identifizierung des Nutzers, Autorisierung am SP

1. Produktivföderation ( Advanced ) + eduGAIN : https://shib-idp.awi.de/idp/shibboleth 2. Testföderation:

https://shib-idp2.awi.de/idp/shibboleth

(23)

Shibboleth

Open Source -Software

• IdP / SP im SAML-Kontext

• Entwicklung erfolgt durch das Internet2 -Projekt und OASIS seit 2000

Shibboleth als Synonym für SAML-basiertes Web-SSO

• Bereitstellung von Attributen, Identifizierung des Nutzers, Autorisierung am SP

1. Produktivföderation ( Advanced ) + eduGAIN : https://shib-idp.awi.de/idp/shibboleth 2. Testföderation:

https://shib-idp2.awi.de/idp/shibboleth

Fabian Mangels Hochschule Bremerhaven 12

(24)

Unity IdM

Open Source -Software

• Vielseitige Identitätsmanagementlösung

• In Java geschrieben

• Verwendet einen Jetty HTTP-Server und standardmäßig die DB H2

• Unterstützt viele verschiedene Authentifizierungsprotokolle

• Ermöglicht „einfache“ Integration in ein bestehendes IdM

• Verwendung im Szenario als SP-IdP-Proxy :

• Admin-Endpunkt

• Nutzerprofil-Endpunkt

• RESTful API-Endpunkt

• SAML-Authentifizierungscontroller

(25)

Unity IdM

Open Source -Software

• Vielseitige Identitätsmanagementlösung

• In Java geschrieben

• Verwendet einen Jetty HTTP-Server und standardmäßig die DB H2

• Unterstützt viele verschiedene Authentifizierungsprotokolle

• Ermöglicht „einfache“ Integration in ein bestehendes IdM

• Verwendung im Szenario als SP-IdP-Proxy :

• Admin-Endpunkt

• Nutzerprofil-Endpunkt

• RESTful API-Endpunkt

• SAML-Authentifizierungscontroller

Fabian Mangels Hochschule Bremerhaven 13

(26)

OpenLDAP

Open Source -Software

• Referenzimplementierung des LDAP (RFC 4511)

• Entwicklung durch die OpenLDAP Foundation

• In der Programmiersprache C geschrieben

• Eigenständiger LDAP-Server bzw. -Daemon – slapd

• Diverse Bibliotheken und weitere nützliche Werkzeuge

• Agiert als Identitätsspeicher im Szenario

(27)

VMware vRealize Automation (vRA)

• Zentrale Plattform ( Marketplace )

• Anforderung von IT-Diensten durch Nutzer

• Verwaltung von Cloud- bzw. IT-Ressourcen durch Administratoren

On-Demand -Dienste

• Kommerzielle SW des US-amerikanischen Unternehmens VMware

• Bereitstellung im Umfeld der DFN-AAI-Föderation

• Anmeldung an der Plattform durch Nutzer aus dem erwähnten LDAP-Verzeichnisdienst

Fabian Mangels Hochschule Bremerhaven 15

(28)

Praktische Umsetzung

(29)

Überblick der Umsetzung i

Abbildung 5: Kontextdiagramm des betrachteten Szenarios

(30)

Überblick der Umsetzung ii

(31)

Vorarbeiten – Shibboleth

1 < MetadataProvider i d ="LocalMetadata" x s i : t y p e ="FilesystemMetadataProvider"

m e t a d a t a F i l e ="%{idp.home}/metadata/local -unitysrv1.xml"/ >

Listing 2: Eintragung der lokalen Metadatendatei im Shibboleth IdP

1 < A t t r i b u t e F i l t e r P o l i c y i d ="unity">

< PolicyRequirementRule x s i : t y p e ="OR">

3 < Rule x s i : t y p e ="Requester" value ="https://unitysrv1.awi.de" / >

</ PolicyRequirementRule >

5 < A t t r i b u t e R u l e a t t r i b u t e I D ="mail" permitAny ="true" / >

< A t t r i b u t e R u l e a t t r i b u t e I D ="surname" permitAny ="true" / >

7 < A t t r i b u t e R u l e a t t r i b u t e I D ="givenName" permitAny ="true" / >

< A t t r i b u t e R u l e a t t r i b u t e I D ="commonName" permitAny ="true" / >

9 < A t t r i b u t e R u l e a t t r i b u t e I D ="displayName" permitAny ="true" / >

</ A t t r i b u t e F i l t e r P o l i c y >

Listing 3:

Angewandte Filterrichtlinie im

Shibboleth

IdP

Fabian Mangels Hochschule Bremerhaven 18

(32)

Vorarbeiten – Shibboleth

< MetadataProvider i d ="LocalMetadata" x s i : t y p e ="FilesystemMetadataProvider"

m e t a d a t a F i l e ="%{idp.home}/metadata/local -unitysrv1.xml"/ >

Listing 2: Eintragung der lokalen Metadatendatei im Shibboleth IdP

1 < A t t r i b u t e F i l t e r P o l i c y i d ="unity">

< PolicyRequirementRule x s i : t y p e ="OR">

3 < Rule x s i : t y p e ="Requester" value ="https://unitysrv1.awi.de" / >

</ PolicyRequirementRule >

5 < A t t r i b u t e R u l e a t t r i b u t e I D ="mail" permitAny ="true" / >

< A t t r i b u t e R u l e a t t r i b u t e I D ="surname" permitAny ="true" / >

7 < A t t r i b u t e R u l e a t t r i b u t e I D ="givenName" permitAny ="true" / >

< A t t r i b u t e R u l e a t t r i b u t e I D ="commonName" permitAny ="true" / >

9 < A t t r i b u t e R u l e a t t r i b u t e I D ="displayName" permitAny ="true" / >

</ A t t r i b u t e F i l t e r P o l i c y >

Listing 3: Angewandte Filterrichtlinie im Shibboleth IdP

(33)

Vorarbeiten – Unity IdM

# (Issuer field). This should be unique URI which identifies the server.

2 u n i t y . saml . r e q u e s t e r . r e q u e s t e r E n t i t y I d = h t t p s : / / u n i t y s r v 1 . awi . de

4 #Federation metadata configured trusted IdPs:

u n i t y . saml . r e q u e s t e r . metadataSource . f e d e r a t i o n . u r l = h t t p : / /www . a a i . dfn . de/ f i l e a d m i n /metadata/ dfn−aai−t e s t−metadata . xml

6 u n i t y . saml . r e q u e s t e r . metadataSource . f e d e r a t i o n . p e r M e t a d a t a T r a n s l a t i o n P r o f i l e = s y s : samlShib

Listing 4: Einstellungen des SAML-Authentifizierungscontrollers [UT16]

• Grundeinstellungen an SW

• Weitere Konfigurationen an den benötigten Endpunkten

Fabian Mangels Hochschule Bremerhaven 19

(34)

Vorarbeiten – Hashverfahren i

ID KDF SALT (#Zeichen) HASH (#Zeichen)

DES (Data Encryption Stan- dard)

2 11

1 MD5 (Message Digest 5) ≤ 16 22

5 SHA-256 (seit glibc 2.7) ≤ 16 43

6 SHA-512 (seit glibc 2.7) ≤ 16 86

Tabelle 1: Unterstützte KDFs in der crypt(3) -Funktion [Lin18]

• userPassword: {CRYPT}$ ID $rounds= X $ SALT $ HASH

• Dabei gilt: ID ∈ {1,5,6}, 1000 ≤ X ≤ 999999999,

SALT , HASH ∈ {[a-z]

,[A-Z]

,[0-9]

,[.]

,[/]

}

(35)

Vorarbeiten – Hashverfahren i

ID KDF SALT (#Zeichen) HASH (#Zeichen)

DES (Data Encryption Stan- dard)

2 11

1 MD5 (Message Digest 5) ≤ 16 22

5 SHA-256 (seit glibc 2.7) ≤ 16 43

6 SHA-512 (seit glibc 2.7) ≤ 16 86

Tabelle 1: Unterstützte KDFs in der crypt(3) -Funktion [Lin18]

• userPassword: {CRYPT}$ ID $rounds= X $ SALT $ HASH

• Dabei gilt: ID ∈ {1,5,6}, 1000 ≤ X ≤ 999999999, SALT , HASH ∈ {[a-z]

,[A-Z]

,[0-9]

,[.]

,[/]

}

Fabian Mangels Hochschule Bremerhaven 20

(36)

Vorarbeiten – Hashverfahren ii

• Apache-Library „commons-codec-1.11.jar“

• „org.apache.commons.codec.digest.Crypt“

p r i v a t e S t r i n g [ ] c r y p t ( S t r i n g password , CryptParams params ) {

2 S t r i n g s a l t C r y p t = g e n S a l t C r y p t ( params . g e t S a l t L e n g t h ( ) ) ; S t r i n g c r y p t = C r y p t . c r y p t ( password ,

4 "$" + params . g e t I d H a s h i n g A l g o r i t h m ( ) + "$rounds=" + params . getRounds ( ) + "$" + s a l t C r y p t ) ;

r e t u r n c r y p t . s p l i t ("\\$") ;

6 }

Listing 5: Java – Erzeugung eines crypt(3)-Passworthashes

(37)

Vorarbeiten – Hashverfahren iii

p r i v a t e Random random = new SecureRandom ( ) ;

2 p r i v a t e s t a t i c f i n a l S t r i n g B64T = "./0123456789

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

4 p r i v a t e S t r i n g g e n S a l t C r y p t (f i n a l i n t num) {

f i n a l S t r i n g B u i l d e r s a l t S t r i n g = new S t r i n g B u i l d e r ( ) ;

6 f o r (i n t i = 1 ; i <= num ; i + + ) {

s a l t S t r i n g . append ( B64T . c h a r A t ( random . n e x t I n t ( B64T . l e n g t h ( ) ) ) ) ;

8 }

r e t u r n s a l t S t r i n g . t o S t r i n g ( ) ;

10 }

Listing 6: Java – Erzeugung eines crypt(3) - Salts

Fabian Mangels Hochschule Bremerhaven 22

(38)

Vorarbeiten – Hashverfahren iv

p r i v a t e s t a t i c f i n a l i n t CRYPT_HASH_POS = 4 ;

2

p r i v a t e boolean v e r i f y C r y p t ( PasswordInfo stored , S t r i n g password ) {

4 CryptParams params = new CryptParams ( s t o r e d . getMethodParams ( ) ) ;

S t r i n g c r y p t = C r y p t . c r y p t ( password , "$" + params . g e t I d H a s h i n g A l g o r i t h m ( ) + "

$rounds=" + params . getRounds ( )

6 + "$" + new S t r i n g ( s t o r e d . g e t S a l t ( ) , StandardCharsets . UTF_8 ) ) ; S t r i n g [ ] c r y p t P a r t s = c r y p t . s p l i t ("\\$") ;

8 byte[ ] testedHash = c r y p t P a r t s [ CRYPT_HASH_POS ] . g e t B y t e s ( StandardCharsets . UTF_8 ) ; r e t u r n A r r a y s . areEqual ( testedHash , s t o r e d . getHash ( ) ) ;

10 }

Listing 7: Java – Verifikation eines crypt(3) -Passworts

(39)

Überblick der Umsetzung ii

Abbildung 6: Bausteinsicht der benötigten Komponente

(40)

Implementierung

• Zwei Bash -Skripte auf zwei separaten VMs (flexibel)

Properties -Dateien, Variablen- und Methodennutzung

• Kommunikation über verschlüsselten Transportkanal (SSH, SCP, HTTPS)

• Sichtbarkeit von Passwörtern

• Protokollierung

init -Skripte für beide Prozesse („ /etc/init.d/ “)

• Eigene Systembenutzer zur Ausführung

• Verschlüsselung der LDIF-Dateien via One-time Password (OTP) – „ openssl

(41)

Implementierung – Benutzer-Entitätensynchronisation I

u n i t y S e r v e r . core . enableLowLevelEvents = t r u e

2 u n i t y S e r v e r . core . s c r i p t . n . f i l e =$ { CONF } / s c r i p t s / myGroovy_basicEvents . groovy u n i t y S e r v e r . core . s c r i p t . n . t r i g g e r = methodInvocation . submitEnquiryResponse

Listing 8: Aktivierung der „ Low Level Events “ in Unity IdM [UT18]

• entityId_<entityId>_methodInvocation.submitEnquiryResponse_<timestamp>.unity

• entityId_<entityId>_methodInvocation.setEntityCredential_<timestamp>.unity

• entityId_<entityId>_methodInvocation.removeEntity_<timestamp>.unity

• entityId_<entityId>_methodInvocation.createAttribute_<attributeName>_

<timestamp>.unity

• entityId_<entityId>_methodInvocation.setAttribute_<attributeName>_

<timestamp>.unity

• entityId_<entityId>_methodInvocation.removeAttribute_<attributeName>_

<timestamp>.unity

Fabian Mangels Hochschule Bremerhaven 26

(42)

Implementierung – Benutzer-Entitätensynchronisation I

1 u n i t y S e r v e r . core . enableLowLevelEvents = t r u e

u n i t y S e r v e r . core . s c r i p t . n . f i l e =$ { CONF } / s c r i p t s / myGroovy_basicEvents . groovy

3 u n i t y S e r v e r . core . s c r i p t . n . t r i g g e r = methodInvocation . submitEnquiryResponse

Listing 8: Aktivierung der „ Low Level Events “ in Unity IdM [UT18]

• entityId_<entityId>_methodInvocation.submitEnquiryResponse_<timestamp>.unity

• entityId_<entityId>_methodInvocation.setEntityCredential_<timestamp>.unity

• entityId_<entityId>_methodInvocation.removeEntity_<timestamp>.unity

• entityId_<entityId>_methodInvocation.createAttribute_<attributeName>_

<timestamp>.unity

• entityId_<entityId>_methodInvocation.setAttribute_<attributeName>_

<timestamp>.unity

• entityId_<entityId>_methodInvocation.removeAttribute_<attributeName>_

<timestamp>.unity

(43)

Implementierung – Benutzer-Entitätensynchronisation I

1 i n o t i f y w a i t −mq−e c r e a t e −e a t t r i b −−format %f $MONITORING_DIR | while read F I L E

Listing 9: Überwachung eines Verzeichnisses mit „inotifywait“

1 c u r l −s −k−−n e t r c−f i l e $CONF_DIR / . n e t r c −X PUT −H "Content -Type: application/json

" −d "{\"values\":[\"$uid\"],\"name\": \"userName\",\"groupPath\": \"/\"}" "

https://unitysrv1.awi.de/rest-admin/v1/entity/$entityId/attribute"

3 c u r l −s −k−−n e t r c−f i l e $CONF_DIR / . n e t r c "https://unitysrv1.awi.de/rest-admin/v1/

entity/$entityId/attributes" | sed −e 's/\\//g'−e 's/"{/{/g'−e 's/}"/}/g' >

$ { WORK_DIR } / $ F I L E . tmp

Listing 10:

HTTP-Anfragen an die

RESTful API

mit „curl“

Fabian Mangels Hochschule Bremerhaven 27

(44)

Implementierung – Benutzer-Entitätensynchronisation I

1 i n o t i f y w a i t −mq−e c r e a t e −e a t t r i b −−format %f $MONITORING_DIR | while read F I L E

Listing 9: Überwachung eines Verzeichnisses mit „inotifywait“

1 c u r l −s −k−−n e t r c−f i l e $CONF_DIR / . n e t r c −X PUT −H "Content -Type: application/json

" −d "{\"values\":[\"$uid\"],\"name\": \"userName\",\"groupPath\": \"/\"}" "

https://unitysrv1.awi.de/rest-admin/v1/entity/$entityId/attribute"

3 c u r l −s −k−−n e t r c−f i l e $CONF_DIR / . n e t r c "https://unitysrv1.awi.de/rest-admin/v1/

entity/$entityId/attributes" | sed −e 's/\\//g'−e 's/"{/{/g'−e 's/}"/}/g' >

$ { WORK_DIR } / $ F I L E . tmp

Listing 10: HTTP-Anfragen an die RESTful API mit „curl“

(45)

Implementierung – Benutzer-Entitätensynchronisation I

1 r e s u l t =$ (cat $ { WORK_DIR } / $ F I L E . tmp | j q −c '.[] | select(.["name"] == "surname") | .["values"][0]' | sed 's/"//g')

Listing 11: „surname“ – Parsen der JSON-Datei mit „jq“

1 w r i t e I n L d i f "dn:" "uid=$uid,ou=People ,dc=unity ,dc=awi,dc=de"

w r i t e I n L d i f "changetype:" "modify"

3 w r i t e I n L d i f "replace:" "userPassword"

passwdHash=$ ( g e t J s o n V a l u e "hash")

5 passwdSalt =$ ( g e t J s o n V a l u e "salt")

w r i t e I n L d i f "userPassword:" '{CRYPT}$5$rounds=5000$'$passwdSalt'$'$passwdHash Listing 12:

LDIF-Erstellung aufgrund neuer

Credentials

einer Entität

Fabian Mangels Hochschule Bremerhaven 28

(46)

Implementierung – Benutzer-Entitätensynchronisation I

r e s u l t =$ (cat $ { WORK_DIR } / $ F I L E . tmp | j q −c '.[] | select(.["name"] == "surname") | .["values"][0]' | sed 's/"//g')

Listing 11: „surname“ – Parsen der JSON-Datei mit „jq“

1 w r i t e I n L d i f "dn:" "uid=$uid,ou=People ,dc=unity ,dc=awi,dc=de"

w r i t e I n L d i f "changetype:" "modify"

3 w r i t e I n L d i f "replace:" "userPassword"

passwdHash=$ ( g e t J s o n V a l u e "hash")

5 passwdSalt =$ ( g e t J s o n V a l u e "salt")

w r i t e I n L d i f "userPassword:" '{CRYPT}$5$rounds=5000$'$passwdSalt'$'$passwdHash

Listing 12: LDIF-Erstellung aufgrund neuer Credentials einer Entität

(47)

Implementierung – Benutzer-Entitätensynchronisation I

openssl rand −base64−out $ { WORK_DIR } / $ F I L E . otp 128

2

openssl enc −aes−256−cbc −s a l t −i n $ { WORK_DIR } / $ F I L E . l d i f −out $ { WORK_DIR } / $ F I L E . l d i f . enc−pass f i l e : $ { WORK_DIR } / $ F I L E . otp

4

openssl r s a u t l −e n c r y p t −i n k e y $ { CONF_DIR } / p u b l i c _ k e y . pem−pubin −i n $ { WORK_DIR } /

$ F I L E . otp −out $ { WORK_DIR } / $ F I L E . otp . enc

Listing 13: Verschlüsselung der zu übertragenden Dateien mit „ openssl “ [OT18]

1 scp $ { WORK_DIR } / $ F I L E . otp . enc openldap : ~ / work / . scp $ { WORK_DIR } / $ F I L E . l d i f . enc openldap : ~ / monitoring / .

Listing 14:

Übertragung der kryptographischen Dateien mit „

scp

Fabian Mangels Hochschule Bremerhaven 29

(48)

Implementierung – Benutzer-Entitätensynchronisation I

openssl rand −base64−out $ { WORK_DIR } / $ F I L E . otp 128

2

openssl enc −aes−256−cbc −s a l t −i n $ { WORK_DIR } / $ F I L E . l d i f −out $ { WORK_DIR } / $ F I L E . l d i f . enc−pass f i l e : $ { WORK_DIR } / $ F I L E . otp

4

openssl r s a u t l −e n c r y p t −i n k e y $ { CONF_DIR } / p u b l i c _ k e y . pem−pubin −i n $ { WORK_DIR } /

$ F I L E . otp −out $ { WORK_DIR } / $ F I L E . otp . enc

Listing 13: Verschlüsselung der zu übertragenden Dateien mit „ openssl “ [OT18]

1 scp $ { WORK_DIR } / $ F I L E . otp . enc openldap : ~ / work / . scp $ { WORK_DIR } / $ F I L E . l d i f . enc openldap : ~ / monitoring / .

Listing 14: Übertragung der kryptographischen Dateien mit „ scp

(49)

Implementierung – Benutzer-Entitätensynchronisation II

openssl r s a u t l −d e c r y p t −i n k e y $ { CONF_DIR } / p r i v a t e _ k e y . pem−i n $ { WORK_DIR } / $ F I L E . otp . enc −out $ { WORK_DIR } / $ F I L E . otp

2

openssl enc −d−aes−256−cbc −i n $ { WORK_DIR } / $ F I L E . l d i f . enc −out $ { WORK_DIR } / $ F I L E . l d i f −pass f i l e : $ { WORK_DIR } / $ F I L E . otp

Listing 15: Entschlüsselung der empfangenen Dateien mit „openssl“ [OT18]

1 ldapmodify −x −D cn =admin , dc= u n i t y , dc= awi , dc=de−y $CONF_DIR / . passwd −f $WORK_DIR/

$ F I L E . l d i f

Listing 16:

Ausführung von „ldapmodify“

Fabian Mangels Hochschule Bremerhaven 30

(50)

Implementierung – Benutzer-Entitätensynchronisation II

1 openssl r s a u t l −d e c r y p t −i n k e y $ { CONF_DIR } / p r i v a t e _ k e y . pem−i n $ { WORK_DIR } / $ F I L E . otp . enc −out $ { WORK_DIR } / $ F I L E . otp

3 openssl enc −d−aes−256−cbc −i n $ { WORK_DIR } / $ F I L E . l d i f . enc −out $ { WORK_DIR } / $ F I L E . l d i f −pass f i l e : $ { WORK_DIR } / $ F I L E . otp

Listing 15: Entschlüsselung der empfangenen Dateien mit „openssl“ [OT18]

1 ldapmodify −x −D cn =admin , dc= u n i t y , dc= awi , dc=de−y $CONF_DIR / . passwd −f $WORK_DIR/

$ F I L E . l d i f

Listing 16: Ausführung von „ldapmodify“

(51)

Fazit und Ausblick

(52)

Fazit

• Verteiltes FIM als logische Weiterentwicklung

• IdP als zentrale Schnittstelle des IdM der Heimateinrichtung (Authentifizierung)

• Autorisierung erfolgt vermehrt an einem SP-IdP-Proxy

• Lokale Referenz (Benutzerkonto) wird gebraucht – kein „wirkliches“ SSO

• Funktionstüchtige Umsetzung im Testumfeld

(53)

Ausblick

• Kleinere Verbesserungen / Maßnahmen, weitere Tests

• Größere Probleme:

1. Laufzeit eines lokalen Kontos ( Session-Timeout ) 2. Gruppenberechtigungen ( eduPerson , Policies )

• Nutzung des zentralen SP-IdP-Proxys im HDF-Umfeld

• Verbesserungen durch OpenID Connect (OIDC) in der DFN-AAI?

Fabian Mangels Hochschule Bremerhaven 32

(54)

Vielen Dank für Ihre Aufmerksamkeit!

Einbettung einer lokalen Software eines Föderationsmitgliedes zur Bereitstellung in einem Föderationsumfeld (DFN-AAI)

Bachelorarbeit im Studiengang Informatik

Fabian Mangels <fabian@mangels.it>

Bremerhaven, 20.02.2019

(55)

Anhang

(56)

Alfred-Wegener-Institut (AWI)

• Deutsche Forschungseinrichtung in der Polar- und Meeresforschung

• Hauptsitz in Bremerhaven

• > 1000 Mitarbeiter

• Außenstellen: Potsdam, Helgoland und Sylt

• Fachbereiche: Geo-, Bio- und Klimawissenschaften

• Leistungsfähige Infrastruktur:

Stationen in der Arktis und Antarktis, Schiffe und Flugzeuge

• Rechenzentrum

Abbildung 7: AWI Campus Bremerhaven [AT18]

(57)

Alfred-Wegener-Institut (AWI)

• Deutsche Forschungseinrichtung in der Polar- und Meeresforschung

• Hauptsitz in Bremerhaven

• > 1000 Mitarbeiter

• Außenstellen: Potsdam, Helgoland und Sylt

• Fachbereiche: Geo-, Bio- und Klimawissenschaften

• Leistungsfähige Infrastruktur:

Stationen in der Arktis und Antarktis, Schiffe und Flugzeuge

• Rechenzentrum

Abbildung 7: AWI Campus Bremerhaven [AT18]

Fabian Mangels Hochschule Bremerhaven

(58)

LDAP

Objektklasse Zuständigkeit

top(abstrakt) Alle Einträge gehören zur abstrakten Objektklasse „top“.

organizationalUnit (struktu- rell)

Definiert die Basis eines Eintrags, der eine Organisationseinheit darstellt.

organizationalPerson(struktu- rell)

Grundlage für einen Eintrag, der eine Person in Bezug auf eine Organisa- tion repräsentiert.

inetOrgPerson (unterstützend)

Erweiterung der Objektklasse „organizationalPerson“, um den heu- tigen Anforderungen der Bereitstellung von Internet- und Intranet- Verzeichnisdiensten gerecht zu werden.

eduPerson (unterstützend)

Unterstützt den Austausch zwischen Bildungs- und Forschungseinrich- tungen mit vordefinierten Attributen über Personen.

Tabelle 2: Grundlegende LDAP-Objektklassen [Smi00, Zei06, Sci06, IT16, RFC 2798, RFC 4512, RFC

4519]

(59)

LDAP

Operation Erklärung

Bind Beginn einer Sitzung.

Unbind Beenden einer Sitzung.

Search Suche nach Einträgen ab einer übergebenen Stelle, demBase DN, im DIT.

Modify Änderung eines Eintrags.

Add Hinzufügen eines Eintrags an einer beliebigen Stelle im DIT.

Delete Löschen eines Eintrags.

Compare Vergleich eines Attributwertes mit einem spezifizierten Wert.

Tabelle 3: Zugriffsoperationen auf ein LDAP-Verzeichnis [JD08, vgl. S. 235]

Fabian Mangels Hochschule Bremerhaven

(60)

DFN-AAI

Abbildung 8: DFN-AAI – Produktive Entities [Pem18b, vgl. S. 35]

(61)

DFN-AAI

Abbildung 9: eduGAIN – beteiligte Föderationen [Pem18b, vgl. S. 37]

Fabian Mangels Hochschule Bremerhaven

(62)

DFN-AAI

Abbildung 10: eduGAIN – Beteiligung je Föderation [Pem18b, S. 38]

(63)

DFN-AAI

Abbildung 11: SAML 2.0 — Single Log-out [HCH

+

05, vgl. S. 33]

Fabian Mangels Hochschule Bremerhaven

(64)

DFN-AAI

Verläss- lichkeits- klasse

Identifizierung durch Hei- mateinrichtung

Verfahren zum Ausweis ei- ner Identität

Datenhaltung und Prozesse zur Pflege der Identitäten

Test Verfahren freigestellt. Verfahren freigestellt. Verfahren freigestellt.

Basic Rückantwort von eindeuti- ger Adresse (E-Mail, Tel.-Nr., Postanschrift, etc.).

Anhand eindeutig zuzuord- nender digitalen Adresse.

Verpflichtung bzgl. Aktuali- tät innerhalb von 3 Mona- ten.

Advanced Pers. Vorsprechen gegen- über Vertrauensinstanz unter Vorlage amtlicher Dokumente (alternativ:

Post-Ident, eID / nPA).

Die an den Hochschulen etablierten Einschreibungs- und Einstellungsprozesse werden als gleichwertig akzeptiert.

Pers. Account bzw. digitales Zertifikat (sichere Vergabe- richtlinie).

Verpflichtung bzgl. Aktuali- tät innerhalb von 2 Wochen.

(65)

Shibboleth

Abbildung 12: Attribut-Management in Shibboleth [Pem18a, vgl. S. 4]

Fabian Mangels Hochschule Bremerhaven

(66)

Unity IdM

Abbildung 13: Systemaufbau von Unity IdM [UT18]

(67)

Vorarbeiten – OpenLDAP

1 dn : cn = c o n f i g changetype : modify

3 add : olcPasswordHash olcPasswordHash : { CRYPT }

5

add : o l c P a s s w o r d C r y p t S a l t F o r m a t

7 o l c P a s s w o r d C r y p t S a l t F o r m a t : $5$rounds =5000$ %.16 s

Listing 17: LDIF – Änderung des Standard-Passwortschemas

Fabian Mangels Hochschule Bremerhaven

(68)

LDIF – create entity

1 dn : uid = awiFed2 , ou= People , dc= u n i t y , dc= awi , dc=de changetype : add

3 o b j e c t C l a s s : ine tOr gPe rs on o b j e c t C l a s s : posixAccount

5 o b j e c t C l a s s : shadowAccount uid : awiFed2

7 l o g i n S h e l l : / bin /bash homeDirectory : /home/ awiFed2

9 gidNumber : 5000 uidNumber : 10002

11 d e s c r i p t i o n : uid = awiFed2 , ou= People , dc= u n i t y , dc = awi , dc =de sn : Mangels

13 givenName : Fabian cn : Fabian Mangels

15 displayName : Fabian Mangels mail : f a b i a n . mangels@awi . de

17 userPassword : { CRYPT } $5$rounds =5000$SVb/TG . 2

e9PnJLDJ$hsW4EChqtxFTb9clt6wAxN5P1azYKfo1ig . JgkoU4P .

Listing 18: entityId_2_methodInvocation.submitEnquiryResponse_1542024212.unity.ldif

(69)

LDIF – remove entity / new credentials

1 dn : uid = awiFed2 , ou= People , dc= u n i t y , dc= awi , dc=de changetype : d e l e t e

Listing 19: entityId_2_methodInvocation.removeEntity_1542024374.unity.ldif

dn : uid = awiFed2 , ou= People , dc= u n i t y , dc= awi , dc=de

2 changetype : modify r e p l a c e : userPassword

4 userPassword : { CRYPT } $5$rounds =5000 $1xFq0 /GHmt4QTkIm$zo7XVwNH30VhPPq7aEA . miJ7LxWpwk3wYZa8oBH . / N3

Listing 20: entityId_2_methodInvocation.setEntityCredential_1542024274.unity.ldif

Fabian Mangels Hochschule Bremerhaven

(70)

LDIF – set attribute / remove attribute

dn : uid = awiFed2 , ou= People , dc= u n i t y , dc= awi , dc=de

2 changetype : modify r e p l a c e : mail

4 mail : f a b i a n . mangels@awi . de

Listing 21: entityId_2_methodInvocation.setAttribute_email_1542024325.unity.ldif

dn : uid = awiFed2 , ou= People , dc= u n i t y , dc= awi , dc=de

2 changetype : modify d e l e t e : mail

Listing 22: entityId_2_methodInvocation.removeAttribute_email_1542024343.unity.ldif

(71)

Literaturverzeichnis i

Atherton, Christopher J. ; Barton, Thomas ; Basney, Jim ; Broeder, Daan ; Costa, Alessandro ; Daalen, Mirjam V. ; Dyke, Stephanie ; Elbers, Willem ; Enell,

Carl-Fredrik ; Fasanelli, Enrico Maria V. ; Fernandes, João ; Florio, Licia ; Gietz, Peter

; Groep, David L. ; Junker, Matthias B. ; Kanellopoulos, Christos ; Kelsey, David ; Kershaw, Philip ; Knapic, Cristina ; Kollegger, Thorsten ; Koranda, Scott ; Linden, Mikael ; Marinic, Filip ; Matyska, Ludek ; Nyrönen, Tommi H. ; Paetow, Stefan ; Paglione, Laura A D. ; Parlati, Sandra ; Phillips, Christopher ; Prochazka, Michal ; Rees, Nicholas ; Short, Hannah ; Stevanovic, Uros ; Tartakovsky, Michael ;

Venekamp, Gerben ; Vitez, Tom ; Wartel, Romain ; Whalen, Christopher ; White, John

; Zwölf, Carlo M.:

Federated Identity Management For Research Collaborations.

In: FIM4R (2018), Juli.

http://dx.doi.org/10.5281/zenodo.1307551. –

Fabian Mangels Hochschule Bremerhaven

(72)

Literaturverzeichnis ii

DOI 10.5281/zenodo.1307551. – abgerufen am 10.10.2018 AWI-Team:

AWI Bremerhaven.

https://www.awi.de/ueber-uns/standorte/bremerhaven.html.

Version: November 2018. – abgerufen am 03.01.2019 Höllrigl, Thorsten:

Informationskonsistenz im föderativen Identitätsmanagement: Modellierung und Mechanismen, Karlsruher Institut für Technologie (KIT), Diss., 2011.

http://dx.doi.org/10.5445/IR/1000022470. – DOI 10.5445/IR/1000022470. –

abgerufen am 15.10.2018

(73)

Literaturverzeichnis iii

Hughes, John ; Cantor, Scott ; Hodges, Jeff ; Hirsch, Frederick ; Mishra, Prateek ; Philpott, Rob ; Maler, Eve:

Profiles for the OASIS Security Assertion Markup Language (SAML) V2.0 / OASIS.

Version: März 2005.

https://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf.

2005. – techreport. –

abgerufen am 25.10.2018 Internet2-Team:

eduPerson Object Class Specification (201602) / Internet2.

Version: März 2016.

http:

//software.internet2.edu/eduperson/internet2-mace-dir-eduperson-201602.html.

Fabian Mangels Hochschule Bremerhaven

(74)

Literaturverzeichnis iv

2016. –

Forschungsbericht. – abgerufen am 26.10.2018 Jochen Dinger, Hannes H.:

Netzwerk- und IT-Sicherheitsmanagement : eine Einführung.

Universitätsverlag Karlsruhe, Karlsruhe, 2008

https://publikationen.bibliothek.kit.edu/1000007400/142064. – ISBN 978–3–86644–209–2. –

abgerufen am 06.10.2018

(75)

Literaturverzeichnis v

Linux Programmer’s Manual:

crypt, crypt_r - password and data encryption.

man-page.

http://man7.org/linux/man-pages/man3/crypt.3.html.

Version: April 2018. – abgerufen am 06.10.2018 Mangels, Fabian:

Einbettung einer lokalen Software eines Föderationsmitgliedes zur Bereitstellung in einem Föderationsumfeld (DFN-AAI).

http://epic.awi.de/48571/.

Version: December 2018

Fabian Mangels Hochschule Bremerhaven

(76)

Literaturverzeichnis vi

OpenSSL-Team:

openssl manpage – commands.

https://www.openssl.org/docs/man1.1.0/apps/.

Version: September 2018. – abgerufen am 27.10.2018 Pempe, Wolfgang:

Attribute: Attribut-Schemata, -Generierung, -Übertragung und Verarbeitung am SP.

https://download.aai.dfn.de/ws/2018_fhdo/attributes.pdf.

Version: August 2018. –

abgerufen am 19.10.2018

(77)

Literaturverzeichnis vii

Pempe, Wolfgang:

Grundlagen: AAI, Web-SSO, Metadaten und Föderationen.

https://download.aai.dfn.de/ws/2018_fhdo/grundlagen.pdf.

Version: August 2018. – abgerufen am 19.10.2018 Sciberras, Andrew:

Lightweight Directory Access Protocol (LDAP): Schema for User Applications.

RFC 4519.

http://dx.doi.org/10.17487/RFC4519.

Version: Juni 2006 (Request for Comments). – abgerufen am 21.10.2018

Fabian Mangels Hochschule Bremerhaven

(78)

Literaturverzeichnis viii

Smith, Mark C.:

Definition of the inetOrgPerson LDAP Object Class.

RFC 2798.

http://dx.doi.org/10.17487/RFC2798.

Version: April 2000 (Request for Comments). – abgerufen am 21.10.2018

Unity-Team ; Unity (Hrsg.):

Unity SAML HowTo Manual.

Unity, April 2016.

http://www.unity-idm.eu/documentation/unity-1.9.0/saml-howto.html. –

abgerufen am 01.10.2018

(79)

Literaturverzeichnis ix

Unity-Team ; Unity (Hrsg.):

Unity Manual.

Unity, August 2018.

http://www.unity-idm.eu/documentation/unity-2.6.2/manual.html. – abgerufen am 01.10.2018

Widdowson, Rod ; Cantor, Scott:

Identity Provider Discovery Service Protocol and Profile / OASIS.

Version: März 2008.

http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-idp-discovery.pdf.

2008. – techreport. –

abgerufen am 25.10.2018

Fabian Mangels Hochschule Bremerhaven

(80)

Literaturverzeichnis x

Zeilenga, Kurt:

Lightweight Directory Access Protocol (LDAP): Directory Information Models.

RFC 4512.

http://dx.doi.org/10.17487/RFC4512.

Version: Juni 2006 (Request for Comments). –

abgerufen am 21.10.2018

Abbildung

Abbildung 1: Vereinfachter Überblick des Szenarios
Abbildung 2: Verwendeter LDAP-Namensraum (DIT)
Abbildung 3: Grundlegende SSO-Interaktion in der DFN-AAI [Pem18b, vgl. S. 11]
Abbildung 4: SAML 2.0 — Single Sign-on [HCH + 05, WC08, vgl. S. 15, S. 8]
+7

Referenzen

ÄHNLICHE DOKUMENTE

Sie sind davon überzeugt, dass der Workshop einen wichtigen Beitrag zum auch in den nächsten Jahren noch spannenden Themenkomplex Datenschutz, Identitätsmanagement und

Auf Grundlage der Empfehlungen zur Beschreibung von Kontext ([ZLO07], S. 558) soll der Informationsbedarf eines Benutzers durch (1) eine allgemeine Darstellung als Defini- tion

Die Verwertungsgebühren für die Weitergabe von ALKIS ® -Daten in Folgeprodukten/-diensten betragen einmalig oder jährlich bei ein bis drei Folgenutzungen 10%, bei mehr als drei

Um zu verhindern, dass eine bestimmungsgemäße sicherheitsrelevante Vernetzung eines Produkts mit externen Systemen zu einem neuen Produkt führt, könnte der Produktbe- griff

„wandelbaren“ Produkts soll verhindert werden, dass unter Berufung auf die Unmöglichkeit der abschließenden Risikobeurteilung „unreife“ Produkte auf den Markt kommen und

Aufwand für die Wartung wächst Schlechte Codequalität Smells Modell passt nicht zum Code Dokumentation passt nicht zum Code..

 Termine werden im Juni bekannt gegeben (mind. drei Termine über die vorlesungsfreie

 Ein altes Programm muss angepasst werden..