AWS-SCS-note

이아래로는 공부하면서 정리하고 AWS DOCS 에서 발췌한 내용이다.

https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/rotate-keys.html

이미지에 대체텍스트 속성이 없습니다; 파일명은 image.png 입니다.

AWS Secrets Manager

https://docs.aws.amazon.com/ko_kr/secretsmanager/latest/userguide/intro.html

Secrets Manager는 코드의 암호를 포함해 하드 코딩된 자격 증명을 Secrets Manager에서 프로그래밍 방식으로 보안 암호를 검색하도록 하는 API 호출로 바꿀 수 있습니다. 이렇게 하면 보안 암호가 코드에 더 이상 존재하지 않기 때문에 코드를 검사하는 누군가에 의해 보안 암호가 손상되지 않도록 방지할 수 있습니다. 또한 사용자가 지정된 일정에 따라 Secrets Manager가 자동으로 보안 암호를 교체하도록 구성할 수 있습니다. 따라서 단기 보안 암호로 장기 보안 암호를 교체할 수 있어 손상 위험이 크게 줄어듭니다.

AWS Systems Manager Parameter Store

파라미터 스토어는 애플리케이션 구성 및 보안 데이터를 위한 안전한 중앙 집중식 스토리지를 제공합니다. 파라미터 스토어를 사용하여 구성 데이터를 애플리케이션 코드와 분리할 수 있습니다. 파라미터 스토어는 표준 및 고급의 두 가지 파라미터 계층을 제공합니다. 표준 계층에서는 최대 10,000개의 파라미터와 값 크기로 파라미터당 4KB를 저장할 수 있으며, 고급 계층에서는 최대 100,000개의 파라미터와, 값 크기로 파라미터당 8KB를 저장하고 정책을 파라미터에 추가할 수 있습니다. 지능형 계층화를 통해 파라미터 스토어는 생성 요청 또는 업데이트 요청에서 요청된 기능을 기반으로 계층 선택을 자동화하여 중단 없는 방법으로 고급 계층 기능을 사용할 수 있도록 합니다. 예를 들어 지능형 계층화 설정을 사용하면 계정에 10,000개의 표준 파라미터가 초과되는 경우 후속 파라미터가 고급 파라미터로 만들어져 애플리케이션 코드를 변경할 필요가 없게 됩니다. 지능형 계층화는 기본 계층이라는 새로운 서비스 수준 설정에서 옵션으로 사용할 수 있습니다.

aws config

https://docs.aws.amazon.com/ko_kr/config/latest/developerguide/config-concepts.html

aws cloudtrail

https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/awscloudtrail-ug.pdf

vpc 침투테스트시 허가가 필요없는 서비스가 있음

. https://aws.amazon.com/security/penetration-testing/

허용

  • Amazon EC2 인스턴스, NAT 게이트웨이 및 Elastic Load Balancer
  • Amazon RDS
  • Amazon CloudFront
  • Amazon Aurora
  • Amazon API Gateway
  • AWS Lambda 및 Lambda Edge 기능
  • Amazon Lightsail 리소스
  • Amazon Elastic Beanstalk 환경

금지

Amazon Route 53 Hosted Zones를 통한 DNS zone walking

  • 서비스 거부 (DoS), 분산 서비스 거부 (DDoS), 시뮬레이트 DoS, 시뮬레이트 DDoS
  • 포트 플러딩
  • 프로토콜 플러딩
  • 요청 플러딩(로그인 요청 플러딩, API 요청 플러딩)

GuardDuty

GuardDuty는 AWS CloudTrail, Amazon VPC 흐름 로그 및 DNS 로그와 같은 여러 AWS 데이터 원본에 걸쳐 수백억 건의 이벤트를 분석 route53 이아니라 외부 ad 흐름은 확인할수 없음.

SecureString

SecureString 파라미터는 안전한 방식으로 저장되고 참조되어야 하는 모든 민감한 데이터를 뜻합니다. 암호나 라이선스 키처럼 사용자가 일반 텍스트로 수정하거나 참조해서는 안 되는 데이터가 있는 경우, SecureString 데이터 형식을 사용하여 이 파라미터를 생성합니다.

https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/sysman-paramstore-securestring.html

aws kms additional authenticated data

암호화 컨텍스트

대칭 CMK를 사용하는 모든 AWS KMS 암호화 작업은 데이터에 대한 추가 컨텍스트 정보를 포함할 수 있는 선택적 키–값 페어 세트인 암호화 컨텍스트를 수락합니다. AWS KMS는 암호화 컨텍스트를 추가 인증 정보(AAD)로 사용하여 인증된 암호화를 지원합니다.

s3-403

https://aws.amazon.com/premiumsupport/knowledge-center/s3-troubleshoot-403/

kms-버킷정책-역할의 iam 권한

AWS 리소스에 대한 액세스를 타사에 부여할 때 외부 ID를 사용하는 방법

이따금 AWS 리소스에 대한 액세스를 타사에 부여해야 할 때가 있습니다(액세스 위임). 이 시나리오의 한 가지 중요한 부분은 IAM 역할 신뢰 정책에서 역할 수임자를 지정하는 데 사용할 수 있는 옵션 정보인 외부 ID입니다.

sts:Externald

AWS-CloudWatch-Synthetics-Canary-review

드디어!!드디어!!드디어!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

AWS에도 웹모니터링 기능이 생겼다.

진짜 너무 기다려왔던 기능이다.

사용법도 간단하고 지표도 바로나오고..이거 완전 물건이다.

바로 셋팅해봤다.

블루 프린트를 사용해서 테스트를 했다.

4가지의 블루프린트를 제공하고 스크립트를 수정할수도 있으나 귀찮다.

일정은 뭐....알아서 나는 5분으로 만들고 나중에 1분으로 수정했다. 일단 나머지 파라메터를 다 기본으로 설정하고 진행했다.

생성하면 진짜 간단하게 보여준다.

핵심은 이거다. 그냥 사이트 모니터링을 해주고

지연된 URL을 체크해준다.

나같은경우엔 사이트 모니터링을

1분마다 하고 5분 평균 임계값을 1로 설정하여 상당히 예민한 모니터링 설정을 하였다. 사이트 URL 체크가 1번만 실패해도 SNS로 경보가 동작한다.

t2.micro 의 경우에는 인스턴스의 CPU가 좀 오르는게 보였으나.. 뭐 이정도는 감당할 만하다. 모니터링으로 인해 부하가 발생하는것이 불편하다면 특정 모니터링 URL만 만들어서 부하를 줄여서 모니터링 하는것이 방법일것이다.

지금 까지는 target group에 의존한 모니터링을 사용하였는데 이젠 서비스에 대한 모니터링이 가능한 순간이 와서 너무 즐겁다.

일단 블로그에 충분한 테스트 이후에 api 와 프로덕션 환경에서 사용해 봐야겠다.

포스팅을 작성하고 나중에 비용계산을 진행해 보았다.

단순계산으로

1분마다 모니터링 하면 60*24*31=44604*0.0012 USD=53.568=USD

5분마다 면....11USD 정도 이다-_-;;;

음....모니터링 치고 비싼데...????????????????ㅠㅠ

적용하기 전에 비용꼭 계산해보고 사용하자..

읽어줏셔서 감사하다!

wordprss-smart-qoute disable

지금까지 내블로그는 복붙이면 가능하도록 만들어 졌다고 생각했다.

그런데 따라해보니 시작부터 에러가 발생하였다.

뭐지? 하고 보니 json 에서 쿼터가..

wordpress smart quotes disable에 대한 이미지 검색결과

이런식으로 작동하는거였다.

이페이지를 참고하여 /wordpress/wp-content/plugins 경로에 disable-plugin-quotes.php 를 생성하고 아래와 같은 내용을 추가하여 주었다.

[root@ip-10-0-0-12 plugins]# cat disable-plugin-quotes.php
<?PHP
/*
Plugin Name: Disable Smart Quotes
Plugin URI: http://www.fayazmiraz.com/disable-auto-curly-quotes-in-wordpress/
Description: WordPress Plugin to Disable auto Smart (Curly) quote conversion
Version: 1.0
Author: Fayaz Ahmed
Author URI: http://www.fayazmiraz.com/
*/
if( version_compare ( $wp_version, '4.0' ) === -1 ) {
// To Disable Smart Quotes for WordPress less than 4.0
foreach( array(
'bloginfo',
'the_content',
'the_excerpt',
'the_title',
'comment_text',
'comment_author',
'link_name',
'link_description',
'link_notes',
'list_cats',
'nav_menu_attr_title',
'nav_menu_description',
'single_post_title',
'single_cat_title',
'single_tag_title',
'single_month_title',
'term_description',
'term_name',
'widget_title',
'wp_title'
) as $sQuote_disable_for )
remove_filter( $sQuote_disable_for, 'wptexturize' );
}
else {
// To Disable Smart Quotes for WordPress 4.0 or higher
add_filter( 'run_wptexturize', '__return_false' );
}

이렇게 플러그인이 생성되고 활성화하면

이증상이 사라진다..

지금까지 내블로그에서 복붙안되셨던 분들께 사죄를..

aws-ec2-user-data-cloud-watch-metric-memory-disk

오늘 포스팅은 사용자 데이터에 대한 포스팅을 할거다.

오늘 추가하는 내용은 cloudwatch 사용자 매트릭을 이용하는것이므로 비용이발생한다.

정말 미미한 비용이지만 비용발생의 거부감이 있다면 따라하지 말것.

이전에 Cloud Watch 를 이용하여 메모리를 모니터링 하는법과 경보를 만드는 방법을 포스팅 했었다.

이건 기본매트릭엔 memory/disk 모니터링이 안되므로 스크립트로 매트릭을 Watch로 전송하는 방식이다. agent 방식도 있으나 내가 선호하는 방식이 아니다.

먼저 사용할 inline 정책이다.

필요 권한

필요한 권한
cloudwatch:PutMetricData
cloudwatch:GetMetricStatistics
cloudwatch:ListMetrics
ec2:DescribeTags

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "ec2:DescribeTags",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        }
    ]
}

일단 정책 생성누르고 json 으로 넣는다.

그리고 정책의 이름을 정해서 넣는다

사용권한

나는 ec2-monitoring-policy 로 대충 입력했다. 상황과 사용자에 따라 다르다.

이제 역할을 생성한다.

신뢰 할수있는 유형의 서비스에서 EC2를 선택한다.

미리 생성한 정책을 선택한다.

태그는 사실 대충 입력했다. 하지만 각각 사용자마다의 태그 규칙을 정하고 사용하는것이 좋다.

정상적으로 만들면 신뢰 정책 태그가 생성한 순으로 잘보일것이다.

하나라도 빠져있다면 이상한거다.

오늘의 대상이 되는 인스턴스의 OS는 ubuntu 와 amazon linux2 / contos 이다.

user data 에 사용할 스크립트다

amazon linux2 / contos7

#!/bin/bash
sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64 unzip
cd ~
curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
unzip CloudWatchMonitoringScripts-1.2.2.zip && \
rm CloudWatchMonitoringScripts-1.2.2.zip
echo "#disk metric" >> /etc/crontab
echo "#*/5 * * * * root /root/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron" >> /etc/crontab
systemctl restart crond

ubuntu 14 - 18

#!/bin/bash
sudo apt-get install unzip libwww-perl libdatetime-perl
cd ~
curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
unzip CloudWatchMonitoringScripts-1.2.2.zip && \
rm CloudWatchMonitoringScripts-1.2.2.zip
echo "#disk metric" >> /etc/crontab
echo "#*/5 * * * * root /root/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron" >> /etc/crontab
systemctl restart crond

위의 스크립트는 UserData 에 넣어주면 된다.

현재 스크립트는 주석처리되어 삽입까지만 되고 crontab 에서는 주석처리되어 돌지 않는다. 동작시키려면

echo "#*/5 * * * * root /root/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron" >> /etc/crontab
echo "*/5 * * * * root /root/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron" >> /etc/crontab

변경하고 crontab 을 재시작하자.

crontab 에 삽입되며, 5분마다 memory와 disk 사용량에 대한 매트릭을 CloudWatch 로 전송한다.

인스턴스 세부정보 구성에서 아까 생성한 역할을 부여하고, 사용자 데이터에서 위에 올려둔 스크립트를 붙여넣기 한다.

[root@ip-172-31-47-207 ~]# yum history
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
ID | Command line | Date and time | Action(s) | Altered
2 | install -y perl-Switch p | 2020-04-25 00:27 | Install | 50
1 | -t -y --exclude=kernel - | 2020-04-25 00:27 | Update | 1
history list

yum history를 보면 정상적으로 패키지 설치가 된게 보이고,

[root@ip-172-31-47-207 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
#disk metric
*/5 * * * * root /root/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron

정상적으로 crontab에 스크립트도 들어간게 보인다.

그래서 CloudWatch 에서 모두 > linux 시스템 이라는 이름으로 사용자 매트릭이 생성된것이 보일것이다.

여기까지 되면 이제 인스턴스의 메모리와 디스크 모니터링이 가능해졌다.

aws 에서는 기본 매트릭으로 여러가지 모니터링 환경을 제공하는데 memory 와 disk 는 모니터링이 되지 않아 불편한 부분이 있었다.

-_-; 이 포스팅이 도움이 되길 바란다.!

IT infra user group MeetUp review

사진 설명이 없습니다.

IT인프라 유저그룹에서 세션을 진행했습니다.

아무도 이야기하지 않는 클라우드 3사 솔직 비교 라는 주제였습니다.

많은 고민을 해왔던 주제고 어느정도 결론을 낸 주제이므로 나름의 자신이 있었습니다.

글을 써내려 갈때 주로 선택하는 방식이 주제와 결론을 정하고 주제에 따른 살을 입혀서 내용을 풍성하게 만드는 방식으로 주로 글을 씁니다.

퍼블릭 클라우드 3사 비교라는 주제는 자칫하면 쏠릴 수 있고 민감한 주제라 어떻게 풀어가야할지 고민을 많이했지만 평소 관심이 많은 주제라 망설임 없이 슬라이드를 작성하였습니다.

가장 신경을 쓴부분은 나의 이야기가 상대방이 공감할수 있는이야기 인가? 이부분을 최대한 고민해서 작성했습니다.

사실 결론까지 이어지는 맥이 좀 약하다 생각했습니다.

사람들이 내 결론을 잘 받아들였을까 고민될정도...

하지만 결론에 대해 갸웃? 하더라도 전달하고 싶었던 정보들은 내가 가졌던 의구심과 답답했던 과정들은 가감없이 전달될것이라 생각했기 때문에 내 불편함에 대해서 사람들이 공감할수 있다면 절반은 성공이라 생각하며 슬라이드를 작성하였습니다.

"어떤 클라우드가 싸고 좋은가요? " 이 뻔 하고 어려운 질문에 답변을 하는게 이번 세션에서 말하고 싶은 바였습니다.

그래서 저의 결론은 "더 좋고 더 나쁜 클라우드는 없다." 였습니다.

역할에 따라 취향에 따라 상황에 따라 비용에 따라 모든것은 인프라일 뿐 그저 맞춰서 사용하는것이 정답이라는 대답을 드릴수 밖에 없었습니다. 정말로 교과서 적인 대답이지만 이 답변을 드리기 위해 경험한 바를 풀어가며 살을 붙였습니다.

여러 고민 끝에 슬라이드를 작성하였고 23일 meetup에서 세션을 진행하였습니다.

긴장이 되긴 했는데 딱 적당한 긴장감이었고 처음하는 세션이라 중간중간 방향성을 잃긴 했지만 결국 방향성을 되찾았습니다.

눈을 가린 말처럼 슬라이드의 마지막장으로 달려갔습니다.

준비한 멘트는 많았지만 생각만큼 조리있게 설명하는건 쉽지 않았습니다.

말은 뇌를 거치지 않은게 더 많았습니다.

고심해서 하는 말보단 날것의 멘트가 점점 차오를 쯤 슬라이드의 마지막장에 이르렀습니다.

어려운 질문일수록 더욱 깊게 생각납니다.

"멀티클라우드 구성 관련 질문을 주셨는데 벤더락을 피하고 싶다." 라는 질문을 하셨습니다. 저는 개인적으로 아직까진 멀티 클라우드에 대해서 부정적인 입장입니다.

떨어뜨릴수 있는 서비스라면 분리해야한다 생각합니다.

이유는 비용과 트래픽의 측면을 제외 할 수 없습니다. 각 퍼블릭 클라우드의 장점인 서비스만 떼서 이용 할 수 있다면 더 할 나위없이 좋겠지만 컨셉이 정해지기 전까진 정말 답이없는 이야기라 생각이 됩니다.

어제의 세션을 저스스로 점수를 메기자면 7점 정도를 주려고 합니다.

저는 처음이었고 연초부터 쉼없이 달려왔습니다.
좀 지친 상태에서 시작했지만 즐겁게 준비했고 의도한 바는 전달한거 같습니다.

짧은 시간 준비한 세션이었고 만족하지 못한 분이 계실수도 있다 생각합니다.

이부분은 제가 따로 채우겠습니다. 궁금하신 부분이나 이상한 부분이 있다면 언제든 질문해 주세요. 답변드리겠습니다.

즐거운 세션이었고 좋은분들과 함께 해서 의미있었습니다.

먼저 흔히 할수 없는 기회를 주신 조훈님께 감사드립니다.

글읽어 주신 분들. 세션을 봐주신 분들께 감사인사를 드립니다.

마지막으로 감사합니다.

발표에 사용한 슬라이드를 첨부합니다.