Cuando se habilita el cifrado del lado del cliente, los objetos se cifran localmente antes de cargarse en Object Storage Service (OSS). Solo el propietario de la clave maestra del cliente (CMK) puede descifrar los objetos. Esto mejora la seguridad de los datos durante la transmisión y el almacenamiento.
Precauciones
En este tema se utiliza como ejemplo el identificador de región
cn-hangzhoude China (Hangzhou). De forma predeterminada, se usa el endpoint público. Si necesita acceder a OSS desde otros servicios de Alibaba Cloud en la misma región que OSS, utilice el endpoint interno. Para obtener más información sobre la correspondencia entre las regiones y los endpoints de OSS, consulte OSS regions and endpoints.Al usar el cifrado del lado del cliente, debe garantizar la integridad y validez de la clave maestra del cliente (CMK).
Cuando copie o migre datos cifrados, usted es responsable de la integridad y validez de los metadatos del objeto.
Definición de métodos
OSS SDK for Python V2 admite los siguientes métodos para utilizar CMK:
-
CMK basadas en RSA administradas por usted mismo
El SDK proporciona una implementación predeterminada de Rivest-Shamir-Adleman (RSA). Si usted aporta una CMK, debe pasar la clave pública y la clave privada al SDK.
-
CMK personalizadas
Si el método de CMK basadas en RSA no cubre sus necesidades, puede implementar el cifrado y descifrado con CMK personalizadas.
Estos métodos de cifrado evitan fugas de información y protegen sus datos en el cliente. Incluso si los datos se filtran, terceros no podrán descifrarlos.
Para obtener más información sobre los principios del cifrado del lado del cliente en OSS, consulte Client-side encryption en la guía de usuario de OSS.
Para usar el cifrado del lado del cliente, cree una instancia del cliente de cifrado y llame a las operaciones de API correspondientes. Sus objetos se cifran y descifran automáticamente como parte de la solicitud.
class EncryptionClient:
...
def __init__(self,client: Client, master_cipher: MasterCipher, decrypt_master_ciphers: Optional[List[MasterCipher]] = None)
Parámetros de solicitud
|
Parámetro |
Tipo |
Descripción |
|
client |
*Client |
Una instancia de un cliente sin cifrado. |
|
master_cipher |
MasterCipher |
La instancia de CMK para cifrar y descifrar claves de datos. |
|
decrypt_master_ciphers |
List[MasterCipher] |
La instancia de CMK para descifrar claves de datos. |
A continuación se muestran las operaciones que proporciona EncryptionClient:
|
Operación básica |
Descripción |
|
get_object_meta |
Consulta los encabezados HTTP estándar de metadatos del objeto. |
|
head_object |
Consulta toda la información de metadatos del objeto. |
|
get_object |
Descarga y descifra el objeto. |
|
put_object |
Carga y cifra el objeto. |
|
initiate_multipart_upload |
Inicia una carga multiparte y el contexto de cifrado multiparte (EncryptionMultiPartContext). |
|
upload_part |
Inicia una carga multiparte y aplica el cifrado automáticamente. Al llamar a la operación de API, debe establecer el contexto de cifrado para la carga multiparte. |
|
complete_multipart_upload |
Combina todas las partes en un objeto completo una vez que estas se han cargado. |
|
abort_multipart_upload |
Cancela una tarea de carga multiparte y elimina todas las partes cargadas por dicha tarea. |
|
list_parts |
Enumera todas las partes cargadas mediante la tarea de carga multiparte. |
Uso de CMK basadas en RSA
Usar una CMK basada en RSA para cifrar objetos en cargas simples y descifrarlos en descargas simples
Usar una CMK basada en RSA para cifrar un objeto en una carga multiparte
Uso de CMK personalizadas
Usar una CMK personalizada para cifrar objetos en cargas simples y descifrarlos en descargas simples
Referencias
Para obtener más información sobre los principios del cifrado del lado del cliente en OSS, consulte Client-side encryption.
Para conocer más sobre las operaciones de cifrado del lado del cliente en OSS SDK for Python V2, consulte Guía de operaciones.
Para ver el código de ejemplo completo sobre cómo usar una CMK basada en RSA para cifrar objetos en cargas simples y descifrarlos en descargas simples, consulte Ejemplo en GitHub.
Para ver el código de ejemplo completo sobre cómo usar una CMK basada en KMS para cifrar objetos en cargas simples y descifrarlos en descargas simples, consulte Ejemplo en GitHub.