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
pyotpper 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ísper 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
