L'opérateur Kubernetes AlloyDB Omni automatise le cycle de vie des clusters Transparent Data Encryption (TDE) à l'aide de la ressource personnalisée TdeConfig. Cette ressource stocke les informations de connexion Key Management Service (KMS), ce qui permet à l'opérateur d'injecter en toute sécurité les identifiants requis dans les pods de base de données.
Avant de commencer
- Configurez le moteur de secrets KV-V2 de HashiCorp Vault pour vous assurer que le chemin d'accès à la clé de chiffrement de clé (KEK) et le jeton Web JSON (JWT) sont disponibles.
- Assurez-vous qu'AlloyDB Omni est autorisé à lire le fichier de jeton JWT.
(Facultatif) Pour déployer un cluster compatible avec TDE sur OpenShift, accordez la contrainte de contexte de sécurité (SCC)
hostmount-anyuidau compte de serviceDBClusterqui exécute le cluster de base de données.oc adm policy add-scc-to-user hostmount-anyuid -z DBCLUSTER_NAME-sa -n DBCLUSTER_NAMESPACE
Remplacez DBCLUSTER_NAME par le nom de
DBClusteret DBCLUSTER_NAMESPACE par l'espace de noms dans lequel vous souhaitez créer la ressourceDBCluster.
Configurer l'accès à Vault
Créez une ressource secrète contenant votre chemin d'accès KEK et vos identifiants d'authentification.
apiVersion: v1
kind: ConfigMap
metadata:
name: CONFIG_MAP_NAME
data:
kek_url: "KEK_URL"
token_path: "JWT_TOKEN_PATH"
Remplacez les éléments suivants :
CONFIG_MAP_NAME: nom de la carte de configuration. Les valeurs définies danskek_urlettoken_pathsont utilisées dans la définition de la ressourceTdeConfig.KEK_URL: URL complète de la KEK dans HashiCorp Vault. Utilisezvaultcomme protocole pour spécifier HashiCorp Vault comme fournisseur KMS. Par exemple,vault://vault.default.svc:8200/v1/secrets/data/alloydb_kek.JWT_TOKEN_PATH: chemin d'accès au jeton JWT sur le nœud. Par exemple,/tmp/token. Le chemin d'accès au jeton JWT doit être cohérent sur tous les nœuds du cluster.
Créer un secret TLS
Pour créer un secret TLS afin de stocker vos certificats, exécutez les commandes suivantes :
kubectl create secret tls VAULT_SECRET_NAME \
--cert=vault.crt \
--key=vault.key
kubectl patch secret VAULT_SECRET_NAME \
-p '{"data":{"ca.crt":"'$(base64 -w 0 vault.crt)'"}}' \
--type=merge
Remplacez VAULT_SECRET_NAME par un nom pour le secret TLS.
Vous utiliserez ce nom secret lorsque vous créerez la ressource personnalisée TdeConfig.
Créer le CRD TdeConfig
Créez une ressource TdeConfig qui définit la manière dont AlloyDB Omni communique avec Vault pour récupérer la KEK. Le seul type d'authentification compatible est jwt. Assurez-vous de créer la ressource TdeConfig dans le même espace de noms que la ressource DbCluster.
Assurez-vous que le chemin d'accès à votre jeton JWT est accessible à l'utilisateur postgres et que votre instance Vault est accessible sur le réseau.
Pour créer la ressource TdeConfig, procédez comme suit :
Créez et appliquez un fichier manifeste pour la ressource TdeConfig.
apiVersion: alloydbomni.dbadmin.goog/v1
kind: TdeConfig
metadata:
name: TDE_CONFIG_NAME
spec:
kekUrlRef:
name: CONFIG_MAP_NAME
key: kek_url
kmsProvider:
vault:
authType: "jwt"
authMount: "JWT_AUTH_MOUNT_PATH"
jwt:
pathRef:
name: "CONFIG_MAP_NAME"
key: "token_path"
role: "VAULT_ROLE"
tls:
certSecret:
name: "VAULT_SECRET_NAME"
Remplacez les éléments suivants :
TDE_CONFIG_NAME: nom de la ressourceTdeConfig.JWT_AUTH_MOUNT_PATH: chemin d'accès où le moteur d'authentification est monté dans HashiCorp Vault, tel que défini par votre configuration. Par exemple,auth/kms.- (Facultatif)
VAULT_ROLE: rôle client défini dans votre configuration Vault. Le rôle client valide le JWT et reflète les droits d'accès et l'identité spécifiques accordés au rôle dans HashiCorp Vault. VAULT_SECRET_NAME: nom du secret contenant les certificats pour la connexion Vault. Par exemple,vault-secret.
Déployer le DBCluster
Créez et appliquez un fichier manifeste pour créer une ressource
DBClusterqui fait référence à votre ressourceTdeConfig. Pour en savoir plus sur la création d'un cluster de base de données, consultez Créer un cluster de base de données.apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: "DBCLUSTER_NAME" spec: databaseVersion: "18.3.0" features: transparentDataEncryption: tdeConfigRef: name: "TDE_CONFIG_NAME" [...]Remplacez
TDE_CONFIG_NAMEpar le nom de votre ressourceTdeConfigetDBCLUSTER_NAMEpar le nom duDBClusterque vous souhaitez créer.(Facultatif) Si vous déployez
DBClusterdans un environnement OpenShift, vous devez annoter la ressourceDBClusteravec l'annotationhostmount-anyuid.kubectl annotate dbclusters.alloydbomni.dbadmin.goog `DBCLUSTER_NAME` -n `DBCLUSTER_NAMESPACE` openshift.io/scc=anyuidRemplacez
DBCLUSTER_NAMEpar le nom de votreDBClusterressource etDBCLUSTER_NAMESPACEpar l'espace de noms dans lequel vous souhaitez créer la ressourceDBCluster.
Pour activer TDE pour le cache en colonnes déversé sur SSD, corrigez votre DBCluster comme suit :
kubectl patch dbcluster `DBCLUSTER_NAME` \
-n `DBCLUSTER_NAMESPACE` \
-p '{"spec":{"primarySpec":{"parameters": {"google_columnar_engine.enable_tde_for_storage_cache": "on"}}}}' \
--type=merge
Références des métriques TDE
Vous pouvez afficher toutes les métriques TDE dans l'agent de surveillance d'AlloyDB Omni. Le tableau suivant explique la signification de chaque métrique.
| Nom | Description | Libellé | Unité | Type |
|---|---|---|---|---|
alloydb_omni_database_tde_data_blocks_decrypted_count_total |
Nombre de blocs de données déchiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_data_blocks_encrypted_count_total |
Nombre de blocs de données chiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_data_decryption_time_us_total |
Temps total passé à déchiffrer des blocs de données. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_data_encryption_time_us_total |
Temps total passé à chiffrer des blocs de données. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_enabled |
État activé de TDE. | Non applicable | jauge | |
alloydb_omni_database_tde_kek_info |
Informations sur la KEK TDE. |
|
jauge | |
alloydb_omni_database_tde_temp_blocks_decrypted_count_total |
Nombre de blocs temporaires déchiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_temp_blocks_encrypted_count_total |
Nombre de blocs temporaires chiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_temp_decryption_time_us_total |
Temps total passé à déchiffrer des blocs temporaires. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_temp_encryption_time_us_total |
Temps total passé à chiffrer des blocs temporaires. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_wal_blocks_decrypted_count_total |
Nombre de blocs WAL déchiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_wal_blocks_encrypted_count_total |
Nombre de blocs WAL chiffrés. | Non applicable | compteur | |
alloydb_omni_database_tde_wal_decryption_time_us_total |
Temps total passé à déchiffrer des blocs WAL. | Non applicable | microsecondes | compteur |
alloydb_omni_database_tde_wal_encryption_time_us_total |
Temps total passé à chiffrer des blocs WAL. | Non applicable | microsecondes | compteur |
tde_chill_cache_blocks_encrypted |
Nombre de blocs de cache froid chiffrés. | Non applicable | compteur | |
tde_chill_cache_blocks_decrypted |
Nombre de blocs de cache froid déchiffrés. | Non applicable | compteur | |
tde_chill_cache_blocks_total_encryption_time_us |
Temps total passé à chiffrer des blocs de cache froid. | Non applicable | microsecondes | compteur |
tde_chill_cache_blocks_total_decryption_time_us |
Temps total passé à déchiffrer des blocs de cache froid. | Non applicable | microsecondes | compteur |
tde_ce_cache_ssd_blocks_encrypted |
Nombre de blocs de cache en colonnes déversés sur un espace de stockage SSD qui ont été chiffrés. | Non applicable | compteur | |
tde_ce_cache_ssd_blocks_decrypted |
Nombre de blocs de cache en colonnes déversés sur un espace de stockage SSD qui ont été déchiffrés. | Non applicable | compteur | |
tde_ce_cache_ssd_blocks_total_encryption_time_us |
Temps total passé à chiffrer des blocs de cache en colonnes déversés sur un espace de stockage SSD. | Non applicable | microsecondes | compteur |
tde_ce_cache_ssd_blocks_total_decryption_time_us |
Temps total passé à déchiffrer des blocs de cache en colonnes déversés sur un espace de stockage SSD. | Non applicable | microsecondes | compteur |