묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
보안그룹질문입니다.
로드밸런서용 보안그룹랑 EC2용 보안그룹 인바운드 규칙을 0.0.0.0/0이렇게 두니까 불안해서 혹시 아래처럼 설정하는것 맞자요?ec2에서 보안그룹을 아래처럼 냅두면 https로 접속이 안되는데요. 근데 0.0.0.0/0으로 풀어놓으면 됩니다. 어떻게 해야하나요?ec2에서 ssh를 내 ip로 등록하니까 크롬 aws 에서 접속인안되는데 어떻게 해야하나요? 0.0.0.0/0으로 풀어놓으면 됩니다. 요즘 gpt가 할루시네이션 많이 나와서 여쭤봅니다. 요즘 존댓말로 바꾸라고 하면 내용을 다른 내용으로 바꾸는 경우가 있어서 그대로 질문드립니다. 가장 많이 쓰는 패턴은:로드밸런서용 보안그룹 (LB-SG)인터넷에서 LB까지만 열어둠.EC2용 보안그룹 (EC2-SG)외부는 막고, LB-SG에서만 접속 허용.SSH는 필요하면 내 IP에서만 열기.즉,인터넷 → [LB-SG] → 로드밸런서 → [EC2-SG] → EC2 인스턴스이 구조로 흘러가게 만드는 거야.2. 로드밸런서 보안그룹 설정 (LB-SG)사진에 있는 규칙은 사실상 로드밸런서 보안그룹에 붙이는 게 맞음 (단, SSH는 필요 없음).인바운드 예시 (ALB/NLB 공통)유형프로토콜포트소스HTTPTCP800.0.0.0/0HTTPSTCP4430.0.0.0/0SSH(22)는 로드밸런서에는 절대 필요 없음, 빼는 게 정답.아웃바운드는 기본 모든 트래픽 / 0.0.0.0/0 그대로 둬도 무방.콘솔에서 적용 방법EC2 콘솔 → 왼쪽 메뉴 보안그룹 → 보안 그룹 생성이름: lb-sg 같은 걸로.인바운드 규칙에 위 표대로 추가.로드밸런서 선택 → 보안 → 보안 그룹 편집 → 방금 만든 lb-sg 선택.3. EC2 인스턴스 보안그룹 설정 (EC2-SG)EC2는 직접 인터넷에 안 열고, 로드밸런서 보안그룹에서만 열어주는 게 포인트.인바운드 예시유형프로토콜포트소스HTTPTCP80LB-SG (보안 그룹 선택)HTTPS (필요 시)TCP443LB-SGSSHTCP22내 IP주소/32 (예: 123.123.123.123/32)여기서 중요한 건 소스를0.0.0.0/0가 아니라“보안 그룹” → lb-sg 선택으로 설정하는 거야.콘솔에서 적용 방법EC2 콘솔 → 보안그룹 생성 → 이름 ec2-sg인바운드 규칙에 위 표대로 추가HTTP/HTTPS 규칙 추가할 때 소스 타입을 “사용자 지정” 말고 “보안 그룹”으로 바꾸고 lb-sg 선택EC2 인스턴스 선택 → 작업 → 보안 → 보안 그룹 변경 → ec2-sg 붙이기(기존에 0.0.0.0/0 열려있는 보안그룹 있으면 떼버려도 됨).
-
미해결[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기
gitleaks 시크릿 스캔의 기준에 대한 질문입니다.
1. 무엇을 하고 싶으신가요? gitleaks가 secret을 판별하는 기준에 대해서, 또 지금 현 상황에 대한 이유가 궁금합니다. 2. 언제, 어떤 오류가 발생하시나요?from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "AROAWU22AXDEPO3JX44FD" @app.route("/rextest") def rextest(): return "REXTEST_PATH" if __name__ == "__main__": app.run( host="0.0.0.0", port=8080, debug=True, ) app.py 코드를 위처럼 작성해서 MR을 날릴 경우, 파이프라인에서 gitleaks에 시크릿 값(AWS 예제)가 스캔되지 않습니다. 때문에 build job까지 문제 없이 실행이 됩니다. 3. 어떤 시도를 해보셨나요?로컬 환경에서 강사님 코드를 pull 하고 tools 디렉토리의 gitleaks 디렉토리에서 gitleaks detect -v --no-git 명령을 수행해도 디스코드 예제와 깃랩 예제 2 종류만 스캔될 뿐 AWS 예제는 스캔되지 않습니다. 그래서 app.py 파일에 디스코드 예제를 넣어서 파이프라인을 실행할 경우, 정상적으로 gitleaks에서 시크릿이 스캔되어 job이 실패합니다. 이러한 경우, 코드 문제가 아니라 gitleaks에 대한 문제라고 생각이 드는데, 강의 영상에서는 AWS 예제가 스캔되어 job이 실패되고 저는 정상적으로 실행되는 이유가 궁금합니다. 4. 작성한 코드를 공유해주세요.stages: - gitleaks - build - deploy default: image: name: bentolor/docker-dind-awscli id_tokens: GITLAB_OIDC_TOKEN: aud: https://gitlab.com variables: AWS_DEFAULT_REGION: ap-northeast-2 IMAGE: ${CI_PROJECT_NAME}:latest REMOTE_LATEST_IMAGE: ${AWS_ECR_REPO_URL}:latest REMOTE_REGULAR_IMAGE: ${AWS_ECR_REPO_URL}:${CI_COMMIT_SHORT_SHA} .get_aws_role: &get_aws_role - > export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" $(aws sts assume-role-with-web-identity --role-arn ${AWS_ROLE_ARN} --role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}" --web-identity-token ${GITLAB_OIDC_TOKEN} --duration-seconds 3600 --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text)) .get_ecr_token: &get_ecr_token - *get_aws_role - aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin ${AWS_ECR_REPO_URL} gitleaks: stage: gitleaks image: name: zricethezav/gitleaks:latest entrypoint: [""] script: - gitleaks detect -v --no-git --redact --report-format json rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: paths: - app.py - Dockerfile - requirements.txt build-container-image: stage: build services: - name: docker:dind before_script: - *get_ecr_token script: - docker build -t ${IMAGE} . - docker tag ${IMAGE} ${REMOTE_LATEST_IMAGE} - docker push ${REMOTE_LATEST_IMAGE} - docker tag ${IMAGE} ${REMOTE_REGULAR_IMAGE} - docker push ${REMOTE_REGULAR_IMAGE} rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: paths: - app.py - Dockerfile - requirements.txt deploy: stage: deploy image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest before_script: *get_aws_role variables: AWS_DEFAULT_REGION: ap-northeast-1 script: - | export SERVICE_NAME="${CI_PROJECT_NAME}-service" export AR_SERVICE_NAME=$(aws apprunner list-services --query "ServiceSummaryList[?ServiceName=='${SERVICE_NAME}'].ServiceName | [0]" --output text) # AppRunner에 해당 레포의 매핑되는 서비스가 없는 경우 if [ ${AR_SERVICE_NAME} != ${SERVICE_NAME} ]; then export AR_SERVICE_ARN=$(aws apprunner create-service --service-name "${SERVICE_NAME}" --source-configuration "{\"AuthenticationConfiguration\": {\"AccessRoleArn\": \"${AWS_APP_RUNNER_SERVICE_ROLE_ARN}\"}, \"ImageRepository\": {\"ImageIdentifier\": \"${REMOTE_LATEST_IMAGE}\", \"ImageRepositoryType\": \"ECR\"}}" --instance-configuration 'Cpu="0.25 vCPU",Memory="0.5 GB"' --output text --query "Service.ServiceArn") echo "[+] Creating ${AR_SERVICE_ARN}" # AppRunner 서비스가 존재하는 경우 else export AR_SERVICE_ARN=$(aws apprunner list-services --query "ServiceSummaryList[?ServiceName=='${SERVICE_NAME}'].ServiceArn | [0]" --output text) aws apprunner start-deployment --service-arn ${AR_SERVICE_ARN} echo "[+] Deploying ${AR_SERVICE_ARN}" fi export AR_SERVICE_STATUS=$(aws apprunner describe-service --service-arn ${AR_SERVICE_ARN} --output text --query "Service.Status") while [ ${AR_SERVICE_STATUS} != "RUNNING" ]; do echo "[*] Waiting..." sleep 10 export AR_SERVICE_STATUS=$(aws apprunner describe-service --service-arn ${AR_SERVICE_ARN} --output text --query "Service.Status") if [ ${AR_SERVICE_STATUS} = "CREATE_FAILED" ]; then echo "[-] ${AR_SERVICE_ARN} ${AR_SERVICE_STATUS}" exit 1 fi done echo "[+] ${AR_SERVICE_ARN} deployed!" rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH changes: paths: - app.py - Dockerfile - requirements.txt
-
미해결
read replica가 다운되면 어떻게 되나요?
강의에서 read replica db가 읽기 전용 트래픽을 받고, 마스터 db와 스탠바이 db를 따로 두어서 마스터 db가 위치한 가용영역에 장애가 발생하면 스탠바이를 사용하게 된다고 설명해주셨는데요.만약 read replica db가 있는 영역 전체가 다운돼서 해당 DB를 사용 못하게 되면 트래픽 이동이 어떻게 되나요?
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
수강 기간 연장 부탁 드립니다.
(AWS Certified Cloud Practitioner자격증 준비하기 )의 학습 기간 연장을 요청드립니다.회사일로 바빠서 실제로AWS Certified Solutions Architect - Associate 자격증 강의를 구매해서 들을려다가 너무 이론을 아는게 없어서(AWS Certified Cloud Practitioner 자격증 준비하기)을 추가로 사서 같이 들을려고 지금 보니까 기간이 한달얼핏정도 남아서 염치불구 불구하고 기간연장을 문의드립니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 부탁 드립니다.
(AWS Certified Solutions Architect - Associate 자격증 준비하기 )의 학습 기간 연장을 요청드립니다.회사일로 바빠서 실제로AWS Certified Solutions Architect - Associate 자격증 강의를 구매해서 들을려다가 너무 이론을 아는게 없어서(AWS Certified Cloud Practitioner 자격증 준비하기)을 추가로 사서 같이 들을려고 지금 보니까 기간이 한달얼핏정도 남아서 염치불구 불구하고 기간연장을 문의드립니다
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
수강 기간 연장 부탁 드립니다.
안녕하세요.현재 수강 중인 강의(AWS Certified Cloud Practitioner 자격증 준비하기)의 학습 기간 연장을 요청드립니다.검토 부탁드립니다. 감사합니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기간 연장 부탁 드립니다.
안녕하세요.현재 수강 중인 강의(AWS Certified Solutions Architect - Associate 자격증 준비하기)의학습 기간 연장을 요청드립니다.검토 부탁드립니다. 감사합니다.
-
해결됨(2025) MBTI 테스트 기반 수익형 웹사이트 만들기 - <코딩 배워 사업하자>
ESFP 영어버전 받을 수 있을까요?
안녕하세요.avif 변환중인데, ESFP 영어버전이 없네요.img를 구할 수 있을까요?
-
해결됨AWS Certified Cloud Practitioner 자격증 준비하기
권한 추가 에러
안녕하세요.IAM 정책 개요 및 실습 강의에서 실습 중에 AdministratorAccess권한을 삭제하고 AmazonEC2Access 권한을 추가하는 실습을 따라하는데, AdministratorAccess 권한을 삭제하니 권한 추가가 안되고 액세스 거부가 뜨면서,다음과 같은 메시지가 표시되었습니다.AmazonEC2FullAccess을(를) 사용자에 추가하지 못했습니다. User: arn:aws:iam::670047353149:user/Alan.Jeong is not authorized to perform: iam:AttachUserPolicy on resource: user Alan.Jeong because no identity-based policy allows the iam:AttachUserPolicy action어떤 부분이 잘못된건지 모르겠습니다. IAMFullAccess 권한을 설정하고 다른 권한을 추가하도록 변경된건가요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강연장신청
안녕하세요. 해당 자격증 공부중인데 시간이 조금 부족하여 강의 수강 연장신청합니다. 감사합니다.
-
해결됨실리콘밸리 엔지니어와 함께하는 테라폼(Terraform)
set type에 대한 자료가 잘못 작성된 부분이 있어 제보합니다
# set variable "example_set" { type = set(string) default = ["v1", "v2", "v3"] } output "set_example" { value = var.my_set }set 예제에 example_set으로 variable 을 정의했는데, 사용처에서는 var.my_set 으로 사용되고 있어서 예외가 발생하네요 output "set_example" { value = var.example_set }var.example_set 을 참조하도록 자료가 수정되면 좋을 것 같습니다~!
-
해결됨실전! Django 입문 [최신 5.2 버전]
DOCKER 설치 관련 질문입니다
안녕하세요 선생님! 제 맥북 사양인데요, 도커에서 지원하는 버전이 맞지 않아서 설치 자체가 안되서 이렇게 질문 남깁니다..! 물론 다운로드도 mac intel 버전으로 했는데 지원하는 버전이 아니더군요 ㅠㅠ.. 혹시 제가 놓친 부분이 있는건지 혹은 다른 방법이나 툴이 있을까요? 감사합니다
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
이걸 볼려면 리눅스는 알아야 하는군요..
리눅스를 잘 모르고 aws 볼려고 했는데 ...아쉽군요
-
해결됨비전공자도 이해할 수 있는 AWS 입문/실전
EC2 컴퓨팅 리소스에 연결 vs 연결 안 함
강의에선 EC2 컴퓨팅 리소스에 연결 안 함을 선택했는데, 연결하는 것과 어떠한 차이가 있나요? 강의 예제의 경우엔 EC2 컴퓨팅 리소스에 연결하는 방법은 적절하지 않은 방법인가요? 이미 완강했는데 잠깐 복습하면서 궁금해서 여쭤 봅니다.
-
미해결CloudNet@ - Amazon EKS 기본 강의
16강 16:59 부분 문의드립니다
16강 16:59 부분에 왜 새로운 세션을 접속하는것이고 그 이후에 ss 명령어를 실행하는 이유 알 수 있을까요?kubectl node-shell $NN1 명령어로 접속하면 api server로 통신이 되어서 추가된 tcp 가 보이는걸까요?
-
해결됨비전공자도 이해할 수 있는 AWS 입문/실전
AWS EC2 서버 보안
안녕하세요! 늘 좋은 강의에 감사하며 듣고 있는 학생입니다! EC2 서버를 운영하는데, 보안적 이슈들을 어떻게 처리해야할까에 대한 고민때문에 질문드립니다. 상황 sudo cat /var/log/auth.log, sudo last -f /var/log/btmp 를 보는데, 모르는 IP로 SSH 접속 요청이 많이 찍혀있는 것을 봤습니다. 대부분 시도하자마자 실패한 것 같은데, 일부 요청에선 세션이 21시간정도 머물러 있는 이력들을 포착했습니다.또한 악성 웹봇(?)으로부터 무작위 api 요청하는 것 또한 포착했습니다. (api/.env, api/vendor, api/...php,..) 이때 약간 뭔 심정이였냐면...이런걸 당하는 느낌이었습니다. 일단 제가 적용한 해결책은 ... SSH 연결 세션이 장시간이라는건 위험 -> 서버를 새로 갈자Inbound에서 SSH 접속을 0.0.0.0 으로 둔게 문제이지 않을까내 IP로 제한하자CICD는? 깃헙 러너 IP에 대해 일시적으로 자동으로 보안그룹에서 허용해주고 흐름끝나면 다시 제거하자IP는 근데 바뀌지 않나? 고정 혹은 유동 IP 뭐 어쩌구 있었던거 같은데그럼 그때가서 AWS Console가서 바꿔주면 된다.그래도 SSH 접속 요청이 계속 오면 어떻게 해?Fail2Ban으로 동일 IP 요청 시도 오면 밴 먹이자보니까 여러 포트로 시도가 들어오던데?80, 443, 8080, 22만 허용하자 -> ufw 라는 방화벽?을 사용하자GPT 형님이 PasswordAuthentication과 PermitRootLogin을 no라고 하라던데..sshd_config 에서 막아두고, 철저히 pem 접속만 가능하게 하자근데 저렇게 막아놔도 일단 22포트로 시도는 계속 들어올 수 있잖아그럼 SSH 접속을 22가 아닌 내가 설정한 임의 포트로 제한하자CICD에서 SCP, SSH 접속 시 설정한 포트로 접속하도록 수정하자sshd_config에서 내가 원하는 포트로 설정ufw에 내가 지정한 포트를 allow로 설정지정한 포트로 접속 테스트Inbound에서 22 포트 제거, ufw allow 22포트 제거, sshd_config에서 22포트 제거22포트 접속 시도 -> 실패해야함 -> OK근데 무작위 API 요청은 도메인만 알면 가능하잖아? 이건 어떻게 막지?일단 API의 공통 Prefix 단위로 필터링 -> 허용 및 인증필요 API를 제외한 모든 요청 denyAll 처리 브루투포스 요청이니까 Prefix로 제한해도 결국엔 뚫림그렇게 뚫려도 물론 .authenticated() 에서 막히기는 하지만.. 일단 여기까지 오는 것도 불안하다내가 하고 싶은건 무작위 요청 자체를 막았으면 하는데 어떻게하지?사람이 작정하고 요청하는건 어쩔 수 없어도 웹봇 대상으로는 할 수 있을 것 같은데...고민 저정도로 과연 보안이 지켜질까 하는 걱정이 있습니다. 울타리 좀 쳤다고 빈틈이 메워지는건 아니잖아요. 백엔드 팀원 중 서버 관리를 제가 도맡아하고 있는데, 저 때문에 팀원들 및 사용자 정보가 노출되면 죄책감이 이만저만 아닐 것 같아요. 현업에서는 보통 저런 무작위 접속/요청 공격에 대해 어떻게 어느수준으로 대응할지 궁금합니다. 강사님의 AWS 중급 강의를 수강할 예정인데, 위의 이슈들을 커버칠 수 있는 내용이 포함되어 있는지 궁금합니다. 목차만 봐서는 잘 감이 안와서요... 근데 일단 제가 무지한 상태이기 때문에 무조건 들을거긴합니다.혹시 저기서 더 필요한 보안 작업은 뭐가 있을까요? 일단 WAF 방화벽 (혹은 뭐 CloudFront를 쓰면 된다는 Reddit 글을 본거같습니다)과 침입감지, 취약점 점검을 위한 wazuh라는 플랫폼의 도입을 고려하고 있습니다. 혹시 서버 자체가 털리면, 네트워크 상 주고받는 raw 데이터도 털릴 수 있나요?DB 내부 정보는 중요한 것들은 다 해싱처리해서 털어도 뭐 할 수 있는게 없으니 괜찮겠지~하고 있었는데요. 근데서버 자체가 털려버리는거면 아무리 https로 중간 과정에서의 raw데이터가 보호된다고 해도, 결국 종착지인 EC2 서버에서 그 raw데이터를 가로챌 수도 있는거잖아요?만약 참이라면, 이것도 고려를 하긴 해야할거같은데... 햐 어렵네요 무섭기도하고 재밌기도하고 난감하기도하고
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
Route53에서 도매인 구매
안녕하세요, 강의 잘 듣고 있습니다.27강에서 Route53에서 도메인 구매 진행 시 "무료 플랜 계정으로는 도메인을등록하거나 이전할 수 없습니다."라고 나옵니다.강의 촬영 당시와 변경된 것 인지, 제가 잘 못하고 있는지 알 수 있을까요??
-
미해결(2025) MBTI 테스트 기반 수익형 웹사이트 만들기 - <코딩 배워 사업하자>
강의 9분 45초 질문입니다
json 파일도 assets에 넣고마지막으로 return <Lottie options={defaultOptions}이걸 넣고 안되어서 나름대로 검색을 해봤는데 잘 안돼서 글 남겨봅니당 ㅠㅠ밑엔 에러 메시지에요
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
연장부탁드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강의를 신청해놓고 회사일이너무 바빠서 못듣고 있어요ㅠㅠ 연장 부탁드립니다
-
해결됨eks를 활용한 spring 운영서버 배포(feat. devops의 모든것)
초기 클러스터 생성시 나타나는 오류
초기 클러스터 생성시 CoreDNS 와 kube-proxy 추가가 안되는데생성할때 제가 놓친부분이 있나하여 문의드립니다. 쿠버네티스 버전은 현재 1.34인데 강의와 같이 1.32로 낮춰서 생성했는데어디서 잘못된건가 싶습니다. POD에서 Service로 통신 확인하는 과정에서 오류가 발생하여gpt에 물어보니 해당 기능이 생성되지 않아서 나타나는 문제라고 하는데~현재는 노드그룹과 클러스터는 삭제해놓고 다시 생성하려고 하는데어떤것을 확인하면서 생성하면 좋을까요?