Configura la firma del codice per la tua AWS SAM applicazione - AWS Serverless Application Model

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à:

  1. Creazione di una configurazione di firma del codice: dichiara una AWS::Lambda::CodeSigningConfigrisorsa 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 la CodeSigningConfigArnproprietà della funzione con l'Amazon Resource Name (ARN) di AWS::Lambda::CodeSigningConfiguna risorsa.

  2. Firma del codice: utilizza il sam deploycomando sam packageor con l'--signing-profilesopzione.

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 le quali 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 restituito l'ARN del 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 l'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::CodeSigningConfigrisorsa 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 hanno esito negativo.

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-profilesopzione 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-bucket test-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-bucket test-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-bucket test-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, sam deploy consulta il riferimento ai comandi. AWS SAMCLI