시스템 운영 제어를 위해 SystemsManager 및 Step Functions에서 승인 워크플로우 작업 로그 작성
입문
일반적으로 시스템의 건전성을 확보하기 위해 시스템 운용 통제가 필요하다고 여긴다.특히 FISC 또는 PCIDSS 을 준수해야 할 때 필수적이다.또 이곳의 통제는 비준된 작업만 허용하고 예약되지 않은 작업은 억제하거나 통제하는 것을 말한다.
이러한 시스템 운용 제어를 실현하기 위해 포장과 SaaS를 가져오는 경우도 있지만 이용료가 너무 높아 가져오지 못하는 경우도 있다고 생각합니다.따라서 이번에는 AWS 서비스를 통해서만 시스템 운용 제어를 실현하는 방법 중 하나를 소개한다.
개요
이번 사례로 AWS 서비스를 이용하여'개인정보를 포함하는 DB에 연결된 운용작업을 수행할 때 반드시 사전에 인정하고 작업시 조작일지를 취득해야 한다'는 시스템 운용제어를 실현했다.
시스템 구조도
우선 인상을 잡기 위해 시스템 구성도를 게재한다.
①: 작업자는 작업 시간, 작업 내용을 입력으로 SSM Automation을 수행합니다.실행 후 승인자에게 통지합니다.
②: 승인자는 신청내용을 확인하고 문제가 없으면 승인한다.승인되면 SSM Automation에서 Step Functions가 제거됩니다.
③: Step Functions가 요청할 때 입력한 작업 시작 시간 후 EC2 인스턴스를 작성합니다.
④: 작업자는 SSM Session Manager를 통해 EC2에 로그인합니다.
⑤: 작업자가 EC2에서 RDS로 연결하여 작업을 수행합니다.작업 로그는 SSM Session Manager 기능을 통해 S3에 업로드됩니다.
⑥: Step Functions가 요청할 때 입력한 작업 종료 시간 후에 EC2 인스턴스를 삭제합니다.
이번 구성을 도입함으로써 이루어질 수 있는 것들.
AWS 서비스의 기능만 있으면 다음과 같은 내용을 실현할 수 있다.
이번 사례로 AWS 서비스를 이용하여'개인정보를 포함하는 DB에 연결된 운용작업을 수행할 때 반드시 사전에 인정하고 작업시 조작일지를 취득해야 한다'는 시스템 운용제어를 실현했다.
시스템 구조도
우선 인상을 잡기 위해 시스템 구성도를 게재한다.
①: 작업자는 작업 시간, 작업 내용을 입력으로 SSM Automation을 수행합니다.실행 후 승인자에게 통지합니다.
②: 승인자는 신청내용을 확인하고 문제가 없으면 승인한다.승인되면 SSM Automation에서 Step Functions가 제거됩니다.
③: Step Functions가 요청할 때 입력한 작업 시작 시간 후 EC2 인스턴스를 작성합니다.
④: 작업자는 SSM Session Manager를 통해 EC2에 로그인합니다.
⑤: 작업자가 EC2에서 RDS로 연결하여 작업을 수행합니다.작업 로그는 SSM Session Manager 기능을 통해 S3에 업로드됩니다.
⑥: Step Functions가 요청할 때 입력한 작업 종료 시간 후에 EC2 인스턴스를 삭제합니다.
이번 구성을 도입함으로써 이루어질 수 있는 것들.
AWS 서비스의 기능만 있으면 다음과 같은 내용을 실현할 수 있다.
AWS 서비스의 기능만 있으면 다음과 같은 내용을 실현할 수 있다.
동작 확인
상술한 절차의 동작을 확인해 보세요.작업을 확인할 수 있는 AWS 리소스는 CloudFormation으로 구축됩니다.CloudFormation 템플릿 여기 에서 시도하고 싶은 사람은 시도하십시오!또한 CloudFormation 실행 후 다음을 수행하십시오.
실행 후 다음 메일은 CloudFormation 실행 시 매개 변수에 입력된 승인자 메일 주소로 전송되므로 "Approve"링크를 통해 승인자 IAM 사용자가 로그인합니다.
승인자는 내용을 확인하고 문제가 없으면 승인한다.
SSMAutomation 실행 시 start_시간 매개 변수를 입력하는 시간이 되면 EC2가 시작되므로 작업자 IAM 사용자는 세션 관리자를 사용하여 연결합니다.(UserData에서 SSM 에이전트가 업데이트되었으므로 SSM 에이전트를 업데이트하라는 메시지가 표시되면 몇 분 후에 다시 확인하십시오.)
mysql client를 사용하여 RDS를 연결합니다.연결할 때의 사용자 이름 비밀번호는 클라우드 형식을 실행할 때 입력한 매개 변수를 확인해야 합니다.
mysql -h 【RDSエンドポイント】 -P 3306 -u admin -p
작업이 완료되면 세션이 끝날 때 작업 로그가 S3, SSMAutomation 실행 시 end_에 업로드됩니다시간 매개 변수를 입력할 때까지 EC2는 삭제됩니다.
선언 해설
다음은 이번 시스템으로 구성된 주요 SSM 문서와 Step Functions StateMachine의 선언 정의를 소개합니다.
SSM Document
{
"description": "Approve Workflow",
"schemaVersion": "0.3",
"parameters": {
"Description": {
"description": "operation description",
"type": "String"
},
"EndTime": {
"description": "(Required & format:YYYY-MM-DDThh:mm:ss+09:00) End Time",
"type": "String",
"allowedPattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\+09:00$"
},
"StartTime": {
"description": "(Required & format:YYYY-MM-DDThh:mm:ss+09:00) Start Time",
"type": "String",
"allowedPattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\+09:00$"
}
},
"mainSteps": [
{
"inputs": {
"Message": "approve check",
"NotificationArn": "arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:approver-topic",
"Approvers": [
"arn:aws:iam::xxxxxxxxxxxx:user/approver"
],
"MinRequiredApprovals": 1
},
"name": "approve",
"action": "aws:approve",
"onFailure": "Abort"
},
{
"inputs": {
"UserName": "operator",
"PolicyName": "AllowSessionManager",
"Service": "iam",
"PolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"ssm:StartSession\",\"Resource\":\"*\",\"Condition\":{\"DateGreaterThan\":{\"aws:CurrentTime\":\"{{StartTime}}\"},\"DateLessThan\":{\"aws:CurrentTime\":\"{{EndTime}}\"}}}]}",
"Api": "PutUserPolicy"
},
"name": "putInlinepolicy",
"action": "aws:executeAwsApi"
},
{
"inputs": {
"input": "{\"start_time\" : \"{{StartTime}}\", \"end_time\" : \"{{EndTime}}\"}",
"stateMachineArn": "arn:aws:states:ap-northeast-1:xxxxxxxxxxxx:stateMachine:lambdaExec"
},
"name": "execStepFunction",
"action": "aws:executeStateMachine"
}
]
}
{
"description": "Approve Workflow",
"schemaVersion": "0.3",
"parameters": {
"Description": {
"description": "operation description",
"type": "String"
},
"EndTime": {
"description": "(Required & format:YYYY-MM-DDThh:mm:ss+09:00) End Time",
"type": "String",
"allowedPattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\+09:00$"
},
"StartTime": {
"description": "(Required & format:YYYY-MM-DDThh:mm:ss+09:00) Start Time",
"type": "String",
"allowedPattern": "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\+09:00$"
}
},
"mainSteps": [
{
"inputs": {
"Message": "approve check",
"NotificationArn": "arn:aws:sns:ap-northeast-1:xxxxxxxxxxxx:approver-topic",
"Approvers": [
"arn:aws:iam::xxxxxxxxxxxx:user/approver"
],
"MinRequiredApprovals": 1
},
"name": "approve",
"action": "aws:approve",
"onFailure": "Abort"
},
{
"inputs": {
"UserName": "operator",
"PolicyName": "AllowSessionManager",
"Service": "iam",
"PolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"ssm:StartSession\",\"Resource\":\"*\",\"Condition\":{\"DateGreaterThan\":{\"aws:CurrentTime\":\"{{StartTime}}\"},\"DateLessThan\":{\"aws:CurrentTime\":\"{{EndTime}}\"}}}]}",
"Api": "PutUserPolicy"
},
"name": "putInlinepolicy",
"action": "aws:executeAwsApi"
},
{
"inputs": {
"input": "{\"start_time\" : \"{{StartTime}}\", \"end_time\" : \"{{EndTime}}\"}",
"stateMachineArn": "arn:aws:states:ap-northeast-1:xxxxxxxxxxxx:stateMachine:lambdaExec"
},
"name": "execStepFunction",
"action": "aws:executeStateMachine"
}
]
}
StepFunctions StateMachine
{
"Comment": "lambda exec",
"StartAt": "StartWait",
"States": {
"StartWait": {
"Type": "Wait",
"TimestampPath": "$.start_time",
"Next": "CreateEC2"
},
"CreateEC2": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:start-ec2",
"Next": "DeleteWait"
},
"DeleteWait": {
"Type": "Wait",
"TimestampPath": "$.end_time",
"Next": "DeleteEC2"
},
"DeleteEC2": {
"Type": "Task",
"Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:end-ec2",
"End": true
}
}
}
마지막
SystemsManager 및 Step Functions를 사용하여 작업할 때 승인 워크플로우 및 작업 로그 획득에 대해 설명합니다.컨트롤을 도입할 때 참고가 된다면 좋겠다.
Reference
이 문제에 관하여(시스템 운영 제어를 위해 SystemsManager 및 Step Functions에서 승인 워크플로우 작업 로그 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chanhama/items/8ee3fec7aaf419a159b8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(시스템 운영 제어를 위해 SystemsManager 및 Step Functions에서 승인 워크플로우 작업 로그 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chanhama/items/8ee3fec7aaf419a159b8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)