Crittografia di modelli personalizzati - Amazon Bedrock

Crittografia di modelli personalizzati

Amazon Bedrock utilizza i dati di addestramento con l’azione CreateModelCustomizationJob o con la console per creare un modello personalizzato, ovvero una versione di un modello di fondazione Amazon Bedrock di cui è stato eseguito il fine-tuning. I modelli personalizzati sono gestiti e archiviati da AWS.

Amazon Bedrock utilizza i dati di ottimizzazione forniti solo per eseguire il fine-tuning di un modello di fondazione Amazon Bedrock. Amazon Bedrock non utilizza tali dati per altri scopi, ad esempio per addestrare i modelli di fondazione. I dati di addestramento dell’utente non vengono utilizzati per addestrare i modelli base Titan né vengono distribuiti a terze parti. Anche altri dati di utilizzo, come i timestamp, gli ID degli account registrati e altre informazioni registrate dal servizio, non vengono utilizzati per addestrare i modelli.

Nessuno dei dati di addestramento o convalida forniti per il fine-tuning viene archiviato da Amazon Bedrock dopo il completamento del processo di fine-tuning.

Si noti che i modelli ottimizzati con fine-tuning possono riprodurre alcuni dati di fine-tuning durante la generazione dei completamenti. Se l’app non deve esporre i dati di fine-tuning in alcuna forma, è necessario innanzitutto filtrare i dati riservati rispetto ai dati di addestramento. Se per errore è già stato creato un modello personalizzato con dati riservati, è possibile eliminarlo, filtrare le informazioni riservate rispetto ai dati di addestramento e quindi creare un nuovo modello.

Per crittografare i modelli personalizzati (inclusi i modelli copiati), Amazon Bedrock offre due opzioni:

  1. Chiavi di proprietà di AWS: per impostazione predefinita, Amazon Bedrock crittografa i modelli personalizzati con le Chiavi di proprietà di AWS. Non è possibile visualizzare, gestire o utilizzare le Chiavi di proprietà di AWS o eseguirne l’audit. Tuttavia, non è necessario effettuare alcuna operazione o modificare programmi per proteggere le chiavi che eseguono la crittografia dei dati. Per ulteriori informazioni, consulta la sezione Chiavi di proprietà di AWS nella Guida per gli sviluppatori di AWS Key Management Service.

  2. Chiavi gestite dal cliente: è possibile scegliere di crittografare i dati con chiavi gestite dal cliente stesso. Per ulteriori informazioni su AWS KMS keys, consulta Chiavi gestite dal cliente nella Guida per gli sviluppatori di AWS Key Management Service.

Nota

Amazon Bedrock abilita automaticamente la crittografia a riposo utilizzando le Chiavi di proprietà di AWS senza alcun addebito. Per l’utilizzo delle chiavi gestite dal cliente, vengono applicati i costi di AWS KMS. Per ulteriori informazioni sui prezzi, consulta Prezzi di AWS Key Management Service.

Per ulteriori informazioni su AWS KMS, consulta la Guida per sviluppatori di AWS Key Management Service.

Come Amazon Bedrock utilizza le concessioni in AWS KMS

Se si specifica una chiave gestita dal cliente per crittografare un modello personalizzato per un processo di personalizzazione o di copia del modello, Amazon Bedrock crea una concessione KMS primaria associata al modello personalizzato per conto dell’utente inviando una richiesta CreateGrant a AWS KMS. Questa concessione consente ad Amazon Bedrock di accedere e di utilizzare la chiave gestita dal cliente. Le concessioni in AWS KMS vengono utilizzate per consentire ad Amazon Bedrock di accedere a una chiave KMS nell’account del cliente.

Amazon Bedrock richiede che la concessione utilizzi la chiave gestita dal cliente per le seguenti operazioni interne:

  • Inviare richieste DescribeKey a AWS KMS per verificare che la chiave KMS simmetrica gestita dal cliente fornita durante la creazione del processo sia valida.

  • Inviare richieste GenerateDataKey e Decrypt a AWS KMS per generare chiavi di dati crittografate con la chiave gestita dal cliente e decrittografare le chiavi di dati crittografate in modo da utilizzarle per crittografare gli artefatti del modello.

  • Inviare richieste CreateGrant a AWS KMS per creare concessioni secondarie limitate con un sottoinsieme delle operazioni precedenti (DescribeKey, GenerateDataKey, Decrypt), per l’esecuzione asincrona della personalizzazione e della copia del modello o della creazione di throughput allocato.

  • Amazon Bedrock specifica un principale per il ritiro durante la creazione delle concessioni, in modo che il servizio possa inviare una richiesta RetireGrant.

L’accesso alla chiave AWS KMS gestita dal cliente è completo. Per revocare l’accesso alla concessione, segui la procedura descritta in Ritirare e revocare le concessioni nella Guida per gli sviluppatori di AWS Key Management Service oppure rimuovi l’accesso del servizio alla chiave gestita dal cliente in qualsiasi momento modificando la policy della chiave. In tal caso, Amazon Bedrock non sarà in grado di accedere al modello personalizzato crittografato dalla chiave.

Ciclo di vita delle concessioni primarie e secondarie per modelli personalizzati

  • Le concessioni primarie hanno una lunga durata e rimangono attive fino a quando i modelli personalizzati associati sono ancora in uso. Quando un modello personalizzato viene eliminato, la concessione primaria corrispondente viene automaticamente ritirata.

  • Le concessioni secondarie sono di breve durata. Vengono automaticamente ritirate non appena viene completata l’operazione che Amazon Bedrock esegue per conto dei clienti. Ad esempio, una volta terminato un processo di copia del modello, la concessione secondaria che ha consentito ad Amazon Bedrock di crittografare il modello personalizzato copiato viene immediatamente ritirata.

Come creare una chiave gestita dal cliente e come collegarvi una policy della chiave

Per crittografare una risorsa AWS con una chiave creata e gestita dal cliente, esegui questa procedura generale:

  1. (Prerequisito) Assicurati che il ruolo IAM disponga delle autorizzazioni per l’azione CreateKey.

  2. Segui la procedura descritta in Creazione di chiavi per creare una chiave gestita dal cliente utilizzando la console AWS KMS o l’operazione CreateKey.

  3. La creazione della chiave restituisce un Arn per la chiave che consente di eseguire le operazioni che richiedono l’utilizzo della chiave stessa, ad esempio l’invio di un processo di personalizzazione del modello o l’esecuzione dell’inferenza del modello.

  4. Crea e collega una policy della chiave alla chiave con le autorizzazioni richieste. Per creare una policy della chiave, segui i passaggi descritti in Creazione di una policy della chiave nella Guida per gli sviluppatori di AWS Key Management Service.

Autorizzazioni e policy della chiave per modelli personalizzati e copiati

Dopo aver creato una chiave KMS, è necessario collegarvi una policy della chiave. Le policy della chiave sono policy basate sulle risorse che si allegano alla chiave gestita dal cliente per controllarne l’accesso. Ogni chiave gestita dal cliente deve avere esattamente una policy della chiave, che contiene istruzioni che determinano chi può usare la chiave e come la possono usare. Quando crei la chiave gestita dal cliente, puoi specificare una policy della chiave. È possibile modificare la policy della chiave in qualsiasi momento, ma potrebbe verificarsi un breve ritardo prima che la modifica sia disponibile in AWS KMS. Per ulteriori informazioni, consulta Gestione dell'accesso alle chiavi gestite dal cliente nella Guida per gli sviluppatori di AWS Key Management Service.

Le seguenti azioni KMS vengono utilizzate per le chiavi che crittografano i modelli personalizzati e copiati:

  1. kms:CreateGrant: crea una concessione per una chiave gestita dal cliente consentendo al principale del servizio Amazon Bedrock di accedere alla chiave KMS specificata tramite operazioni di concessione. Per ulteriori informazioni sulle concessioni, consulta Concessioni in AWS KMS nella Guida per gli sviluppatori di AWS Key Management Service.

    Nota

    Amazon Bedrock stabilisce inoltre un principale per ritiro e ritira automaticamente la concessione quando non è più necessaria.

  2. kms:DescribeKey: fornisce i dettagli della chiave gestita dal cliente per consentire ad Amazon Bedrock di convalidarla.

  3. kms:GenerateDataKey: fornisce i dettagli della chiave gestita dal cliente per consentire ad Amazon Bedrock di convalidare l’accesso utente. Amazon Bedrock memorizza il testo criptato generato insieme al modello personalizzato in modo che sia possibile utilizzarlo come controllo di convalida aggiuntivo per gli utenti del modello personalizzato.

  4. kms:Decrypt: decrittografa il testo criptato memorizzato per verificare che il ruolo disponga dell’accesso appropriato alla chiave KMS che crittografa il modello personalizzato.

Come best practice per la sicurezza, si consiglia di includere la chiave di condizione kms:ViaService per limitare l’accesso alla chiave del servizio Amazon Bedrock.

Sebbene alla chiave sia possibile collegare una sola policy della chiave, a quest’ultima è possibile collegare più istruzioni aggiungendole all’elenco nel campo Statement della policy.

Le seguenti istruzioni sono rilevanti per la crittografia di modelli personalizzati e copiati:

Per utilizzare la chiave gestita dal cliente per crittografare un modello personalizzato o copiato, includi la seguente istruzione in una policy della chiave per consentire la crittografia di un modello. Nel campo Principal, aggiungi gli account che desideri autorizzare a crittografare e decrittografare la chiave all’elenco a cui è mappato il sottocampo AWS. Se utilizzi la chiave di condizione kms:ViaService, puoi aggiungere una riga per ogni Regione oppure utilizzare * al posto di ${region} per consentire l’uso di tutte le Regioni che supportano Amazon Bedrock.

{ "Sid": "PermissionsEncryptDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}:role/${role}" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}.amazonaws.com" ] } } }

Per consentire l’accesso a un modello crittografato con una chiave KMS, includi la seguente istruzione in una policy della chiave per consentire la decrittografia della chiave stessa. Nel campo Principal, aggiungi gli account che desideri autorizzare a decrittografare la chiave all’elenco a cui è mappato il sottocampo AWS. Se utilizzi la chiave di condizione kms:ViaService, puoi aggiungere una riga per ogni Regione oppure utilizzare * al posto di ${region} per consentire l’uso di tutte le Regioni che supportano Amazon Bedrock.

{ "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::${account-id}:role/${role}" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.${region}.amazonaws.com" ] } } }

Per ulteriori informazioni sulle policy della chiave da creare, espandi la sezione corrispondente al tuo caso d’uso:

Se prevedi di crittografare un modello personalizzato con una chiave KMS, la policy della chiave dipenderà dal caso d’uso specifico. Espandi la sezione corrispondente al tuo caso d’uso:

Se i ruoli che invocano il modello personalizzato sono gli stessi che personalizzano il modello, è necessaria solo l’istruzione indicata in Crittografare un modello. Nel campo Principal del modello di policy seguente, aggiungi gli account che desideri autorizzare a personalizzare e invocare il modello personalizzato all’elenco a cui il sottocampo AWS è mappato.

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCustomModelKey", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

Se i ruoli che invocano il modello personalizzato sono diversi dal ruolo che personalizza il modello, sono necessarie le istruzioni indicate in Crittografare un modello e Consentire l’accesso a un modello crittografato. Modifica le istruzioni nel modello di policy seguente in questo modo:

  1. La prima istruzione consente la crittografia e la decrittografia della chiave. Nel campo Principal, aggiungi gli account che desideri autorizzare a personalizzare il modello personalizzato all’elenco a cui il sottocampo AWS è mappato.

  2. La seconda istruzione consente solo la decrittografia della chiave. Nel campo Principal, aggiungi gli account che desideri autorizzare solo a invocare il modello personalizzato all’elenco a cui il sottocampo AWS è mappato.

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCustomModelKey", "Statement": [ { "Sid": "PermissionsEncryptCustomModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } }, { "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

Quando si copia un modello di proprietà o condiviso, potrebbe essere necessario gestire fino a due policy della chiave:

Se prevedi di utilizzare una chiave KMS per crittografare un modello copiato, la policy della chiave dipenderà dal caso d’uso specifico. Espandi la sezione corrispondente al tuo caso d’uso:

Se i ruoli che invocano il modello copiato sono gli stessi che creano la copia del modello, è necessaria solo l’istruzione indicata in Crittografare un modello. Nel campo Principal del modello di policy seguente, aggiungi gli account che desideri autorizzare a personalizzare e invocare il modello copiato all’elenco a cui il sottocampo AWS è mappato.

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCopiedModelKey", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

Se i ruoli che invocano il modello copiato sono diversi dal ruolo che crea la copia del modello, sono necessarie le istruzioni indicate in Crittografare un modello e Consentire l’accesso a un modello crittografato. Modifica le istruzioni nel modello di policy seguente in questo modo:

  1. La prima istruzione consente la crittografia e la decrittografia della chiave. Nel campo Principal, aggiungi gli account che desideri autorizzare a creare il modello copiato all’elenco a cui è mappato il sottocampo AWS.

  2. La seconda istruzione consente solo la decrittografia della chiave. Nel campo Principal, aggiungi gli account che desideri autorizzare solo a invocare il modello copiato all’elenco a cui il sottocampo AWS è mappato.

JSON
{ "Version":"2012-10-17", "Id": "PermissionsCopiedModelKey", "Statement": [ { "Sid": "PermissionsEncryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } }, { "Sid": "PermissionsDecryptCopiedModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

Se il modello di origine da copiare è crittografato con una chiave KMS, collega l’istruzione indicata in Consentire l’accesso a un modello crittografato alla policy della chiave per la chiave che crittografa il modello di origine. Tale istruzione consente al ruolo per la copia del modello di decrittografare la chiave che crittografa il modello di origine. Nel campo Principal del modello di policy seguente, aggiungi gli account che desideri autorizzare a copiare il modello di origine all’elenco a cui il sottocampo AWS è mappato.

JSON
{ "Version":"2012-10-17", "Id": "PermissionsSourceModelKey", "Statement": [ { "Sid": "PermissionsDecryptModel", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Role" ] }, "Action": [ "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService": [ "bedrock.us-east-1.amazonaws.com" ] } } } ] }

Monitorare le chiavi di crittografia per il servizio Amazon Bedrock

Quando si usa una chiave AWS KMS gestita dal cliente con le risorse Amazon Bedrock, è possibile utilizzare AWS CloudTrail oppure Amazon CloudWatch Logs per tenere traccia delle richieste che Amazon Bedrock invia ad AWS KMS.

Di seguito è riportato un esempio di evento AWS CloudTrail per CreateGrant per monitorare le operazioni KMS chiamate da Amazon Bedrock al fine di creare una concessione primaria:

{ "eventVersion": "1.09", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:SampleUser01", "arn": "arn:aws:sts::111122223333:assumed-role/RoleForModelCopy/SampleUser01", "accountId": "111122223333", "accessKeyId": "EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/RoleForModelCopy", "accountId": "111122223333", "userName": "RoleForModelCopy" }, "attributes": { "creationDate": "2024-05-07T21:46:28Z", "mfaAuthenticated": "false" } }, "invokedBy": "bedrock.amazonaws.com" }, "eventTime": "2024-05-07T21:49:44Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "bedrock.amazonaws.com", "userAgent": "bedrock.amazonaws.com", "requestParameters": { "granteePrincipal": "bedrock.amazonaws.com", "retiringPrincipal": "bedrock.amazonaws.com", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE", "operations": [ "Decrypt", "CreateGrant", "GenerateDataKey", "DescribeKey" ] }, "responseElements": { "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE", "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" }, "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

Crittografia dei dati di addestramento, convalida e output

Se si utilizza Amazon Bedrock per eseguire un processo di personalizzazione del modello, i file di input vengono archiviati nel bucket Amazon S3. Al termine del processo, Amazon Bedrock archivia i file dei parametri di output nel bucket S3 specificato durante la creazione del processo e gli artefatti del modello personalizzato risultanti in un bucket S3 controllato da AWS.

I file di output sono crittografati con le configurazioni di crittografia del bucket S3. Tali file vengono crittografati con la crittografia lato server SSE-S3 o con la crittografia SSE-KMS AWS KMS, in base alla configurazione del bucket S3.