Introducció
En aquest tema, explorarem els conceptes d'autenticació i autorització, que són fonamentals per garantir la seguretat en qualsevol arquitectura tecnològica. Aquests processos asseguren que només els usuaris legítims puguin accedir als recursos i que només puguin realitzar les accions permeses.
Conceptes Clau
Autenticació
L'autenticació és el procés de verificar la identitat d'un usuari o sistema. Això es fa mitjançant diverses tècniques, com ara contrasenyes, certificats digitals, biometria, etc.
Mètodes d'Autenticació:
- Contrasenyes: El mètode més comú, però també el més vulnerable si no es gestiona correctament.
- Certificats Digitals: Utilitzen criptografia per verificar la identitat.
- Biometria: Empremtes dactilars, reconeixement facial, etc.
- Autenticació de Doble Factor (2FA): Combina dos mètodes diferents per augmentar la seguretat.
Autorització
L'autorització és el procés de determinar si un usuari autenticat té permís per accedir a un recurs específic o realitzar una acció determinada.
Models d'Autorització:
- Control d'Accés Basat en Rols (RBAC): Assigna permisos a rols específics en lloc d'usuaris individuals.
- Control d'Accés Basat en Atributs (ABAC): Utilitza atributs d'usuaris, recursos i entorn per determinar els permisos.
- Listes de Control d'Accés (ACL): Defineixen permisos específics per a cada usuari o grup d'usuaris.
Implementació d'Autenticació i Autorització
Autenticació
Exemple de Codi: Autenticació amb JWT (JSON Web Tokens)
import jwt import datetime # Clau secreta per signar el token SECRET_KEY = 'clau_secreta' def generar_token(usuari): payload = { 'usuari': usuari, 'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1) } token = jwt.encode(payload, SECRET_KEY, algorithm='HS256') return token def verificar_token(token): try: payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256']) return payload['usuari'] except jwt.ExpiredSignatureError: return 'Token expirat' except jwt.InvalidTokenError: return 'Token invàlid' # Generar un token per a l'usuari 'johndoe' token = generar_token('johndoe') print(f'Token generat: {token}') # Verificar el token usuari = verificar_token(token) print(f'Usuari autenticat: {usuari}')
Autorització
Exemple de Codi: Control d'Accés Basat en Rols (RBAC)
# Definició de rols i permisos ROLS = { 'admin': ['crear', 'llegir', 'actualitzar', 'eliminar'], 'usuari': ['llegir'] } # Assignació de rols a usuaris USUARIS = { 'johndoe': 'admin', 'janedoe': 'usuari' } def comprovar_permís(usuari, acció): rol = USUARIS.get(usuari) if rol and acció in ROLS.get(rol, []): return True return False # Comprovar si 'johndoe' pot 'crear' if comprovar_permís('johndoe', 'crear'): print('Permís concedit') else: print('Permís denegat') # Comprovar si 'janedoe' pot 'crear' if comprovar_permís('janedoe', 'crear'): print('Permís concedit') else: print('Permís denegat')
Exercicis Pràctics
Exercici 1: Implementar Autenticació de Doble Factor (2FA)
Descripció: Implementa un sistema d'autenticació de doble factor que utilitzi contrasenyes i codis OTP (One-Time Password).
Pistes:
- Utilitza una llibreria com
pyotp
per generar i verificar codis OTP. - Combina la verificació de contrasenyes amb la verificació de codis OTP.
Exercici 2: Ampliar el Model RBAC
Descripció: Ampliar l'exemple de RBAC per incloure més rols i permisos, i implementar una funció per afegir nous rols i permisos dinàmicament.
Pistes:
- Defineix una funció per afegir nous rols i permisos.
- Actualitza la funció
comprovar_permís
per gestionar els nous rols i permisos.
Errors Comuns i Consells
Errors Comuns
- No encriptar contrasenyes: Assegura't d'encriptar les contrasenyes abans de guardar-les a la base de dades.
- Tokens no segurs: Utilitza claus secretes fortes i mantingues-les segures.
- Permisos massa amplis: Assigna permisos mínims necessaris per reduir el risc de seguretat.
Consells
- Utilitza llibreries provades: Utilitza llibreries de seguretat provades i mantingudes per la comunitat.
- Revisa regularment els permisos: Realitza auditories periòdiques dels permisos assignats.
- Implementa logs de seguretat: Registra tots els intents d'autenticació i accés per detectar activitats sospitoses.
Conclusió
En aquesta secció, hem après els conceptes fonamentals d'autenticació i autorització, així com com implementar-los en una arquitectura tecnològica. Aquests processos són crucials per garantir la seguretat dels sistemes i protegir els recursos contra accessos no autoritzats. Amb els exercicis pràctics, podràs aplicar aquests conceptes i millorar la seguretat de les teves aplicacions.
Curs d'Arquitectura Tecnològica
Mòdul 1: Fonaments de l'Arquitectura Tecnològica
- Introducció a l'Arquitectura Tecnològica
- Principis de Disseny de Sistemes
- Components d'una Arquitectura Tecnològica
- Models d'Arquitectura
Mòdul 2: Disseny de Sistemes Escalables
- Conceptes d'Escalabilitat
- Patrons de Disseny Escalable
- Balanceig de Càrrega
- Caché i Emmagatzematge en Memòria
Mòdul 3: Seguretat en l'Arquitectura Tecnològica
Mòdul 4: Eficiència i Optimització
- Optimització de Recursos
- Monitoratge i Manteniment
- Automatització de Processos
- Avaluació de Rendiment
Mòdul 5: Gestió de l'Arquitectura Tecnològica
- Governança de TI
- Gestió de Projectes Tecnològics
- Documentació i Comunicació
- Avaluació i Millora Contínua