검색
이 검색 상자를 닫습니다.

Qumulo와 함께 Lambda 함수를 사용하는 방법(2부)

작성자 :
Lambda 함수가 클러스터의 관리자 암호를 교체하고 AWS Secrets Manager에서 암호를 생성하여 클러스터의 자격 증명을 저장하는 방법.

이것은 2부작 시리즈의 마지막 항목입니다. Qumulo와 함께 Lambda 함수를 사용하는 방법. 1부에서는 Qumulo API용 Python 바인딩을 패키징하여 AWS Lambda에 계층으로 업로드했습니다. 이제 이 레이어를 사용해보자!

클러스터의 관리자 암호를 교체하는 Lambda 함수를 생성하는 방법

클러스터의 관리자 암호를 교체하는 Lambda 함수를 만들어 보겠습니다. 우리는 사용할 것입니다 AWS 비밀 관리자, 자격 증명을 관리하고 저장하는 서비스 Qumulo의 비밀번호 교체.

이 서비스와 Qumulo API를 활용하여 Qumulo 관리자 비밀번호에 대한 반복적인 자동 변경을 예약할 수 있습니다. 그러면 다른 서비스가 AWS Secrets Manager API를 통해 현재 관리자 암호에 액세스할 수 있습니다.

이 쿡북은 AWS Lambda, IAM, AWS Secrets Manager 및 AWS에서 실행되는 Qumulo 클러스터. 시작하려면 다음을 수집하세요.

  • Qumulo 클러스터의 관리자 비밀번호
  • Qumulo 클러스터의 IP 주소
  • Qumulo 클러스터가 포함된 서브넷 ID 및 보안 그룹 ID
  • 첫 번째 게시물에서 생성된 Lambda 계층의 ARN

클러스터 자격 증명을 저장하기 위해 AWS Secrets Manager에서 암호를 생성하는 방법

먼저 AWS Secrets Manager에서 Qumulo 클러스터의 자격 증명을 저장할 암호를 생성해 보겠습니다. (일부 변수 이름을 가정하고 이것이 미국 서부 2 지역에서 실행되고 있다고 가정합니다. 이 값을 환경에 맞게 조정합니다.) 당근의 문자열을 환경의 값으로 바꿉니다.

1. 공백을 채우고 다음 명령을 실행합니다.

aws secretsmanager create-secret --name "my-qumulo-credentials" --description "내 qumulo 클러스터에 대한 자격 증명" --secret-string '{"username":"admin", "password":"", "host" :"[클러스터에 있는 노드의 IP]"}'

2. 나중에 참조할 수 있도록 출력에서 ​​암호의 ARN을 기록해 둡니다.

잠시 후 이 비밀을 관리하는 Lambda 함수를 생성하겠습니다. 그렇게 하기 전에 Lambda 함수가 맡을 IAM 역할을 생성해야 합니다. 진행하면서 이 역할에 권한을 추가하겠습니다.

1. 다음 명령을 실행합니다.

aws iam create-role --role-name QumuloSecretRotationRole --assume-role-policy-document '{"버전": "2012-10-17", "문": [{"작업": "sts:AssumeRole", "효과": "허용", "주": {"서비스": "lambda.amazonaws.com"}}]}'

2. 나중에 참조할 수 있도록 생성된 IAM 역할의 ARN을 기록해 둡니다.

Lambda 함수는 AWS CloudWatch에 액세스하여 로그를 업로드하고 Qumulo 클러스터의 VPC에 액세스하여 관리자 암호를 변경해야 합니다. 역할 AWSLambdaVPCAccessExecutionRole</var/www/wordpress> is perfect for this situation.

1. 다음 명령을 실행합니다.

aws iam attach-role-policy --role-name QumuloSecretRotationRole --policy-arn "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"

Qumulo Github의 샘플에서 람다 함수를 생성합니다. 생성된 Lambda 계층을 사용하도록 Lambda 함수를 구성합니다. 첫 번째 게시물에서. 함수는 구현합니다 Secret Manager의 순환 워크플로.

1. 자식 클론 https://github.com/Qumulo/cloud-samples.git
2. cd 람다
3. zip ./qumulo_secret_rotation_lambda.zip ./qumulo_secret_rotation_lambda.py
4. 다음 명령을 실행합니다.

aws lambda create-function --function-name "QumuloAdminPasswordRotationFunction" --runtime "python2.7" --handler "qumulo_secret_rotation_lambda.lambda_handler" --zip 파일 파일b://qumulo_rotation_lambda.zip --layers "[Qumulo API 계층 ARN ]" --vpc-config "SubnetIds=[Qumulo의 서브넷],SecurityGroupIds=[Qumulo의 보안 그룹]" --timeout 30 --description "Qumulo 클러스터의 관리자 비밀번호 교체" --publish --environment "변수={SECRETS_MANAGER_ENDPOINT= https://secretsmanager.us-west-2.amazonaws.com}" --role "[IAM 역할 ARN]"

5. 나중에 참조할 수 있도록 람다 함수 ARN을 기록해 둡니다.

AWS Secrets Manager 서비스에는 Lambda 함수를 호출할 수 있는 권한이 부여되어야 합니다. 다음 명령을 실행합니다.

aws lambda 추가 권한 --function-name "[lambda function ARN]" --statement-id SecretsManagerInvocation --principal "secretsmanager.amazonaws.com" --action "lambda:InvokeFunction"

이제 Lambda 함수를 생성했으므로 Qumulo 암호를 변경할 수 있는 권한을 부여할 수 있습니다. 우리는 이 기능의 사용자가 정책에서 기능의 ARN을 지정하여 수행하는 기능을 통해서만 비밀을 변경할 수 있기를 바랍니다. 이 단계 후에 모든 필요한 권한 람다 함수를 호출하고 작업을 수행하도록 구성해야 합니다.

1. 위에서 언급한 것으로 교체하여 qumulo-lambda-samples/qumulo_secret_rotation_policy.json을 편집합니다.
2. 다음 명령을 실행합니다.

aws iam put-role-policy --role-name QumuloSecretRotationRole --policy-name "QumuloSecretRotationPolicy" --policy-document 파일://qumulo_secret_rotation_policy.json

비밀, 기능 및 권한이 구성되었으므로 이제 Lambda 함수를 비밀과 연결하고 자동 교체를 활성화할 수 있습니다.

이 명령을 실행하십시오 :

aws secretsmanager rotate-secret --secret-id "" --rotation-lambda-arn "[lambda function ARN]" --rotation-rules "AutomaticallyAfterDays=30"

회전이 자동으로 트리거되었습니다. 완료할 때까지 XNUMX분 정도 기다린 다음 비밀 관리자를 확인하여 새 암호(또는 문제를 보려면 CloudWatch 로그)를 확인합니다. 이 명령은 비밀을 검색합니다.

aws secretsmanager get-secret-value --secret-id "[비밀 ARN]"

이제 Qumulo 비밀번호가 안전한 곳에 있으며 정기적으로 변경됩니다!

향후 게시물에서는 S3 알림 및 Qumulo API를 사용하여 파일이 S3 버킷에 나타날 때 Qumulo에 파일을 복사하는 Lambda 함수를 작성할 것입니다. 여기에서 생성된 암호를 사용하여 프로그래밍 방식으로 클러스터에 로그인하여 파일을 업로드합니다.

관련 게시물

위쪽으로 스크롤