Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configura la firma del codice per la tua AWS SAM applicazione
Per garantire che venga distribuito solo codice affidabile, puoi utilizzare AWS SAM per abilitare la firma del codice con le tue applicazioni serverless. La firma del codice aiuta a garantire che il codice non sia stato alterato dopo la firma e che nelle funzioni Lambda vengano eseguiti solo pacchetti di codice firmati da editori affidabili. Questo aiuta a liberare le organizzazioni dall'onere di creare componenti gatekeeper nelle loro pipeline di implementazione.
Per ulteriori informazioni sulla firma del codice, consulta Configurazione della firma del codice per le funzioni Lambda nella Guida per AWS Lambda gli sviluppatori.
Prima di poter configurare la firma del codice per la tua applicazione serverless, devi creare un profilo di firma utilizzando Signer. AWS Utilizzi questo profilo di firma per le seguenti attività:
-
Creazione di una configurazione di firma del codice: dichiara una
AWS::Lambda::CodeSigningConfig
risorsa per specificare i profili di firma degli editori attendibili e impostare l'azione politica per i controlli di convalida. È possibile dichiarare questo oggetto nello stesso AWS SAM modello della funzione serverless, in un modello diverso o in un AWS SAM modello. AWS CloudFormation Quindi abiliti la firma del codice per una funzione serverless specificando laCodeSigningConfigArn
proprietà della funzione con l'Amazon Resource Name (ARN) di unaAWS::Lambda::CodeSigningConfig
risorsa. -
Firma del codice: utilizza il
sam deploy
comandosam package
or con l'--signing-profiles
opzione.
Nota
Per firmare correttamente il codice con i sam
deploy
comandi sam package
o, è necessario abilitare il controllo delle versioni per il bucket Amazon S3 che usi con questi comandi. Se utilizzi il bucket Amazon S3 AWS SAM creato per te, il controllo delle versioni viene abilitato automaticamente. Per ulteriori informazioni sul controllo delle versioni dei bucket Amazon S3 e istruzioni per abilitare il controllo delle versioni su un bucket Amazon S3 da te fornito, consulta Using versioning in Amazon S3 bucket nella Amazon Simple Storage Service User Guide.
Quando distribuisci un'applicazione serverless, Lambda esegue controlli di convalida su tutte le funzioni per cui hai abilitato la firma del codice. Lambda esegue anche controlli di convalida su tutti i livelli da cui dipendono tali funzioni. Per ulteriori informazioni sui controlli di convalida di Lambda, consulta la convalida della firma nella Guida per gli sviluppatori.AWS Lambda
Esempio
Creazione di un profilo di firma
Per creare un profilo di firma, esegui il seguente comando:
aws signer put-signing-profile --platform-id "AWSLambda-SHA384-ECDSA" --profile-name
MySigningProfile
Se il comando precedente ha esito positivo, viene ARN restituito il profilo di firma. Per esempio:
{ "arn": "arn:aws:signer:us-east-1:
111122223333
:/signing-profiles/MySigningProfile
", "profileVersion": "SAMPLEverx", "profileVersionArn": "arn:aws:signer:us-east-1:111122223333
:/signing-profiles/MySigningProfile
/SAMPLEverx" }
Il profileVersionArn
campo contiene le informazioni ARN da utilizzare quando si crea la configurazione di firma del codice.
Creazione di una configurazione di firma del codice e attivazione della firma del codice per una funzione
Il seguente AWS SAM modello di esempio dichiara una AWS::Lambda::CodeSigningConfig
risorsa e abilita la firma del codice per una funzione Lambda. In questo esempio, esiste un profilo affidabile e le distribuzioni vengono rifiutate se i controlli della firma falliscono.
Resources: HelloWorld: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 CodeSigningConfigArn: !Ref MySignedFunctionCodeSigningConfig MySignedFunctionCodeSigningConfig: Type: AWS::Lambda::CodeSigningConfig Properties: Description: "Code Signing for MySignedLambdaFunction" AllowedPublishers: SigningProfileVersionArns: -
MySigningProfile-profileVersionArn
CodeSigningPolicies: UntrustedArtifactOnDeployment: "Enforce"
Firma del codice
Puoi firmare il codice durante il pacchetto o la distribuzione dell'applicazione. Specificate l'--signing-profiles
opzione con il sam deploy
comando sam package
o, come illustrato nei seguenti comandi di esempio.
Firma del codice della funzione al momento del pacchetto dell'applicazione:
sam package --signing-profiles
HelloWorld=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
Firma sia il codice della funzione che il livello da cui dipende la funzione, durante la creazione del pacchetto dell'applicazione:
sam package --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--output-template-file packaged.yaml
Firma del codice funzionale e di un livello, quindi esecuzione di una distribuzione:
sam deploy --signing-profiles
HelloWorld=MySigningProfile MyLayer=MySigningProfile
--s3-bucketamzn-s3-demo-bucket
--template-file packaged.yaml --stack-name --region us-east-1 --capabilities CAPABILITY_IAM
Nota
Per firmare correttamente il codice con i sam
deploy
comandi sam package
o, è necessario abilitare il controllo delle versioni per il bucket Amazon S3 che usi con questi comandi. Se utilizzi il bucket Amazon S3 AWS SAM creato per te, il controllo delle versioni viene abilitato automaticamente. Per ulteriori informazioni sul controllo delle versioni dei bucket Amazon S3 e istruzioni per abilitare il controllo delle versioni su un bucket Amazon S3 da te fornito, consulta Using versioning in Amazon S3 bucket nella Amazon Simple Storage Service User Guide.
Fornire profili di firma con sam deploy --guided
Quando si esegue il sam deploy --guided
comando con un'applicazione serverless configurata con la firma del codice, viene AWS SAM richiesto di fornire il profilo di firma da utilizzare per la firma del codice. Per ulteriori informazioni sui sam deploy --guided
prompt, consulta la sam deploy AWS SAM CLI riferimento al comando.