AWS Lambda에서 AWS KMS 사용

4871 단어 lambdadevopsawskms

액세스 키 및 암호, 메일 서버 도메인과 같은 Lambda 환경에서 자격 증명 정보 사용. 암호화해야 합니다.



여기서 해결책은 KMS를 사용하는 것입니다.





AWS KMS는 대칭 및 비대칭 CMK를 지원합니다.



  • 대칭 CMK:

    Represents a single 256-bit secret encryption key that never leaves AWS KMS unencrypted. To use your symmetric CMK, you must call AWS KMS.



  • 비대칭 CMK:

    Represents a mathematically related public key and private key pair that you can use for encryption and decryption or signing and verification, but not both. The private key never leaves AWS KMS unencrypted. You can use the public key within AWS KMS by calling the AWS KMS API operations, or download the public key and use it outside of AWS KMS.



  • 1. 대칭 CMK(사용자 지정 마스터 키) 생성






    2. 성배를 사용하여 Lambda 함수 생성



    참조: Chalice Topics


    2.1 새 성배 프로젝트 만들기




    chalice new-project encrypt-test
    


    2.2 app.py에서 함수 핸들러 만들기




    import boto3
    import os
    from chalice import Chalice
    from base64 import b64decode
    
    
    app = Chalice(app_name='MyDecryptFunction')
    app.debug = True
    
    
    @app.lambda_function(name='MyDecryptFunction')
    def lambda_handler(event, context):
        encrypted = os.getenv('SES_ID')
        decrypted = boto3.client('kms', region_name='ap-southeast-1').decrypt(
            CiphertextBlob=b64decode(encrypted),
            EncryptionContext={'LambdaFunctionName': os.getenv('AWS_LAMBDA_FUNCTION_NAME')}
        )['Plaintext'].decode('utf-8')
        app.log.debug(f"{decrypted}")
    


    2.3 프로젝트 배포(현재 환경에서 기본 AWS 리전 사용)




    chalice deploy
    Creating deployment package.
    Creating IAM role: encrypt-test-dev
    Creating lambda function: encrypt-test-dev-MyDecryptFunction
    Resources deployed:
      - Lambda ARN: arn:aws:lambda:ap-southeast-1:1111111111111:function:encrypt-test-dev-MyDecryptFunction
    


    3. 결과 확인



    3.1. IAM 역할, 이를 업데이트하여 리소스를 제한할 수 있습니다.




    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "kms:Decrypt"
                ],
                "Resource": [
                    "*"
                ],
                "Sid": "0f1ea010d9414ac08ac9f94a4e67bfa1"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Resource": "arn:aws:logs:*:*:*"
            }
        ]
    }
    


    3.2 람다 함수





    4. 암호화 키 생성









    5. 테스트 생성 및 실행



    좋은 웹페이지 즐겨찾기