Este documento describe las mejores prácticas de seguridad para el Simulador Cuántico.
NUNCA incluyas credenciales directamente en el código fuente:
❌ INCORRECTO:
API_KEY = 'Q8MuqQmCnwTc5NaN...' # ¡NO HAGAS ESTO!✅ CORRECTO:
import os
API_KEY = os.getenv('IBM_QUANTUM_TOKEN') # Usa variables de entornoexport IBM_QUANTUM_TOKEN=tu_api_key_aqui
export SECRET_KEY=tu_clave_secreta_aleatoria$env:IBM_QUANTUM_TOKEN="tu_api_key_aqui"
$env:SECRET_KEY="tu_clave_secreta_aleatoria"Crea un archivo .env en la raíz del proyecto:
IBM_QUANTUM_TOKEN=tu_api_key_aqui
SECRET_KEY=tu_clave_secreta_aleatoria
FLASK_ENV=development
IMPORTANTE: El archivo .env está en .gitignore y NO debe ser subido al repositorio.
- Visita https://quantum-computing.ibm.com/
- Crea una cuenta o inicia sesión
- Ve a tu perfil → API Token
- Copia tu token
- Configúralo como variable de entorno (NO lo pegues en el código)
Antes de publicar tu proyecto:
- Verificar que no hay API keys en el código
- Verificar que no hay contraseñas hardcodeadas
- Verificar que
.envestá en.gitignore - Verificar que no hay archivos de credenciales en Git
- Revisar el historial de Git por credenciales accidentales
- Cambiar todas las claves secretas por defecto
- Usar HTTPS en producción
- Configurar CORS correctamente
- Habilitar rate limiting
- Configurar logging seguro (sin exponer credenciales)
Si accidentalmente expones una API key:
- Revoca inmediatamente la API key comprometida en IBM Quantum
- Genera una nueva API key
- Actualiza las variables de entorno en todos los ambientes
- Limpia el historial de Git si la clave fue commiteada:
# CUIDADO: Esto reescribe la historia git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch archivo_con_credenciales.py" \ --prune-empty --tag-name-filter cat -- --all
- Notifica a tu equipo sobre el incidente
Para entornos de producción, considera usar:
- AWS Secrets Manager: Para aplicaciones en AWS
- Azure Key Vault: Para aplicaciones en Azure
- Google Secret Manager: Para aplicaciones en GCP
- HashiCorp Vault: Para cualquier infraestructura
- Heroku Config Vars: Para despliegues en Heroku
import boto3
from botocore.exceptions import ClientError
def get_secret(secret_name):
client = boto3.client('secretsmanager', region_name='us-east-1')
try:
response = client.get_secret_value(SecretId=secret_name)
return response['SecretString']
except ClientError as e:
raise e
# Uso
API_KEY = get_secret('ibm_quantum_token')Si encuentras una vulnerabilidad de seguridad:
- NO la publiques en issues públicos
- Contacta al equipo de desarrollo directamente
- Proporciona detalles sobre la vulnerabilidad
- Espera una respuesta antes de divulgar públicamente
# Instalar git-secrets
git clone https://github.com/awslabs/git-secrets.git
cd git-secrets
make install
# Configurar
git secrets --register-aws
git secrets --scanpip install truffleHog
truffleHog --regex --entropy=True .Recuerda: La seguridad es responsabilidad de todos. Mantén tus credenciales seguras. 🔐