실습

IAM 정책

  1. 아래와 같은 권한과 조건이 있는 IAM 정책을 생성하세요.

    • 모든 EC2 작업에 대한 권한을 부여하되 API를 요청하는 IP 주소가 123.45.167.89가 아니거나 정책을 부여받은 IAM유저가 MFA를 통해서 로그인 하지 않았을 경우에는 인스턴스를 정지(Stop) 하거나 중지(Terminate)하지 못해야합니다.

  2. "ourbucket" 이라는 이름의 S3 버킷이 있다고 가정하고 아래와 같은 권한과 조건이 있는 IAM 정책을 생성하세요.

    • public/ 접두사(prefix)를 가진 모든 오브젝트에 대한 읽기 권한을 부여합니다.

    • API를 요청하는 IAM 유저 이름과 동일한 이름의 접두사에 대한 모든 읽기,쓰기 권한을 부여합니다.

  3. IAM 정책 시뮬레이터를 통해서 위에서 생성한 정책을 검증하세요.

STS & IAM 역할

  1. CDK를 통해서 실습 환경을 구축하세요.

    cdk deploy sts
  2. 아래와 같은 실습 환경이 구축되었습니다.

    • 아무 권한도 부여되지 않은 IAM 유저가 생성되었습니다.

    • S3 ReadOnly 권한이 부여된 IAM 역할이 생성되었습니다.

    • EC2 인스턴스가 생성되었고 /home/ec2-user/.aws/credentials 파일에 IAM 유저의 Access Key ID와 Secret Access Key가 등록되었습니다.

  3. Outputs에서 인스턴스 ID, IAM 유저 및 역할에 대한 정보를 확인할 수 있습니다.

  4. AWS Systems Manager Session Manager를 통해서 EC2 인스턴스에 접속하세요.

  5. 아래와 같은 명령어로 ec2-user 로 사용자 전환하세요.

    sudo -i
    su ec2-user
  6. 아래와 같은 명령어로 AWS CLI가 IAM 유저의 자격증명을 사용하고 있는지 확인하세요. - Arn 값이 Outputs에서 나온 IAM 유저 ARN과 동일한지 확인합니다.

    aws sts get-caller-identity
  7. IAM 역할의 신뢰관계 정책을 수정해서 IAM 유저가 해당 IAM 역할을 수임(Assume)할수 있도록 하세요.

  8. IAM 유저에 인라인 정책을 추가해서 IAM 역할을 수임해 오는 권한을 부여하세요.

  9. 해당 문서를 참고해서 IAM 역할에 부여된 권한을 포함하는 임시자격증명를 가져오고 아래의 명령어로 임시자격증명을 권한을 확인합니다.

    aws s3 ls
  10. 수동으로 생성한 인라인 정책을 삭제하고 CDK를 통해서 실습 환경을 삭제하세요.

    cdk destroy sts

Secrets Manager & KMS

  1. CDK를 통해서 실습 환경을 구축하세요.

    cdk deploy kms
  2. Outputs에서 인스턴스 ID, RDS 접속 정보가 저장된 Secret 이름, IAM 유저 정보, AWS 관리콘솔 로그인 URL, KMS 키 및 해당 실습의 답이 저장된 Secret 이름을 확인할 수 있습니다.

  3. 현재 사용하고 있는 브라우저의 시크릿 모드나 다른 브라우저를 통해서 Outputs에 나온 AWS 관리콘솔 로그인 URL로 접속하고 Outputs에 나온 IAM 유저 정보로 AWS 관리콘솔에 접속하세요.

  4. AWS Systems Manager Session Manager를 통해서 EC2 인스턴스에 접속하세요.

  5. Secrets Manager에서 Outputs에 나온 RDS 접속 정보가 저장된 Secret의 값을 불러와서 DB 접속정보를 찾습니다. 값이 불러오지 않을 경우 다른 브라우저나 탭에 로그인 되어 있는 루트 계정이나 어드민 권한이 있는 IAM 유저를 통해서 해당 실습에서 생성된 IAM 유저에게 인라인 정책을 통해서 적절한 권한을 부여하세요.

  6. EC2 인스턴스에서 위에서 얻은 DB 접속정보를 통해서 RDS MySQL 서버에 접속하세요.

  7. 아래와 같은 SQL 쿼리를 실행해서 테이블에 저장된 값을 불러옵니다.

    use secret;
    select * from secret;
  8. id "1"의 value 값으로 나온 문자열은 Outputs에 나온 KmsKey로 암호화 되어있습니다. AWS CLI (KMS)를 통해서 해당 문자열을 복호화 하세요. 권한에러가 발생할 경우 다른 브라우저나 탭에 로그인 되어 있는 루트 계정이나 어드민 권한이 있는 IAM 유저를 통해서 해당 KMS 키의 키 정책을 통해서 EC2 인스턴스에 부여된 IAM 역할에 복호화 할수 있는 권한을 부여하세요.

  9. 정상적으로 복호화가 완료됐으면 Secrets Manager에서 Outputs에 나온 Answer Secret의 값을 불러와서 동일한지 확인하세요.

  10. 수동으로 생성 또는 수정한(인라인 정책, 보안그룹 룰, etc)등을 삭제하고 CDK를 통해서 실습 환경을 삭제하세요.

    cdk destroy kms

ALB 액세스 로그 분석

  1. CDK를 통해서 실습 환경을 구축하세요.

    cdk deploy alb-log
  2. Outputs에서 ALB 이름, ALB와 연동된 도메인 주소 및 ALB 엑세스 로그가 저장되는 S3 버킷이름을 확인할 수 있습니다.

  3. 해당 문서를 참고해서 Athena 테이블을 생성하고 SQL 쿼리를 통해서 ALB로 요청을 가장 많이한 클라이언트의 IP 주소를 찾으세요.

  4. ALB가 위치한 서브넷의 네트워크 ACL을 통해서 위에서 찾은 IP주소를 차단하고 CloudWatch를 통해서 해당 ALB에 대한 요청이 감소하는지 확인하세요.

  5. AWS WAF를 생성해서 ALB에 붙이고 5분간 200개 이상의 요청을 보낸 클라이언트를 차단하는 룰을 생성하고 CloudWatch를 통해서 해당 ALB에 대한 요청이 감소하는지 확인하세요.

  6. 수동으로 생성한 WAF를 삭제, ALB 엑세스 로그를 비활성화, ALB 로그 버킷에 저장된 모든 파일을 삭제하고 CDK를 통해서 실습 환경을 삭제하세요.

    cdk destroy alb-log

GuardDuty로 실시간 위협 탐지

  1. GuardDuty를 활성화 하세요.

  2. CDK를 통해서 실습 환경을 구축하세요.

    cdk deploy guard-duty
  3. 실습 환경 구축 후 10분정도 지나면 GuardDuty 콘솔에서 악의적 활동이나 위협의 목록을 확인할수 있습니다. 지속가능한 방법으로 GuardDuty를 통해서 찾아진 위협들을 방어하세요.

  4. CDK를 통해서 실습 환경을 삭제하세요.

    cdk destroy guard-duty

Amazon Cognito

  1. CDK를 통해서 실습 환경을 구축하세요.

    cdk deploy cognito
  2. Outputs에서 인스턴스 ID, Cognoto 사용자 풀, 자격증명 풀 및 S3 버킷이름을 확인할 수 있습니다.

  3. 비인증 사용자들에게는 해당 실습에서 생성된 S3 버킷의 public/ 접두사(prefix)에 대한 쓰기 권한을 부여하세요.

  4. AWS Systems Manager Session Manager를 통해서 EC2 인스턴스에 접속하세요.

  5. 아래와 같은 AWS CLI 명령어들을 이용해서 비인증 사용자에게 부여된 역할을 받고 그 역할을 통해서 /home/ec2-user/sample.txt 파일을 S3 버킷에 public/sample.txt로 업로드 하세요.

    • aws cognito-identity get-id

    • aws cognito-identity get-credentials-for-identity

    • aws s3 cp

  6. 인증 사용자들에게는 해당 실습에서 생성된 S3 버킷에서 인증된 사용자의 Cognito 자격증명 ID를 접두사로 하는 모든 객체에 대한 S3 권한을 부여하세요. - https://aws.amazon.com/blogs/mobile/understanding-amazon-cognito-authentication-part-3-roles-and-policies

  7. Cognito 유저풀에서 새로운 유저를 생성하세요.

  8. 아래와 같은 AWS CLI 명령어들을 통해서 위에서 생성한 유저로 인증 후 해당 유저에게 부여된 역할을 받고 그 역할을 통해서 /home/ec2-user/sample.txt 파일을 S3 버킷에 인증된 유저의 Identity ID/sample.txt로 업로드 하세요.

    • aws cognito-idp initiate-auth

    • aws cognito-idp respond-to-auth-challenge

    • aws cognito-identity get-id

    • aws cognito-identity get-credentials-for-identity

    • aws s3 cp

  9. 수동으로 생성한 IAM 정책을 삭제하고 CDK를 통해서 실습 환경을 삭제하세요.

    cdk destroy cognito

Last updated