묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결도커 마스터즈! CI/CD, DevSecOps로 자동화 보안 실무까지!
docker inspect 명령 결과에서 GraphDriver 항목을 찾을 수 없습니다.
안녕하세요. 강의 내용 알차게 잘 듣고 있습니다.다만, 강사님과 같이 docker inspect nginx:1.28.0-alpine3.21-slim 명령을 실행했을 경우 GraphDrvier 항목을 찾을 수 없고 바로 RootFS 항목만 확인되어 질문 드립니다.root@vagrant:~# docker images i Info → U In Use IMAGE ID DISK USAGE CONTENT SIZE EXTRA nginx:1.28.0-alpine3.21-slim ce2bd4775ed6 20.6MB 6.29MB root@vagrant:~# docker inspect nginx:1.28.0-alpine3.21-slim [ { "Id": "sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195", "RepoTags": [ "nginx:1.28.0-alpine3.21-slim" ], "RepoDigests": [ "nginx@sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195" ], "Comment": "buildkit.dockerfile.v0", "Created": "2025-08-13T16:03:17Z", "Config": { "ExposedPorts": { "80/tcp": {} }, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "NGINX_VERSION=1.28.0", "PKG_RELEASE=1", "DYNPKG_RELEASE=1" ], "Entrypoint": [ "/docker-entrypoint.sh" ], "Cmd": [ "nginx", "-g", "daemon off;" ], "WorkingDir": "/", "Labels": { "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>" }, "StopSignal": "SIGQUIT" }, "Architecture": "arm64", "Variant": "v8", "Os": "linux", "Size": 5802435, "RootFS": { "Type": "layers", "Layers": [ "sha256:982780712fdf5e22c7ed01172785fd7059a9ec11cb375c7133dc5b06c24250ff", "sha256:0d43a52040463d2c8abf5dbcfdf7494c64098f7eab47f4499e759d796c66d90c", "sha256:b81791db8dfbab361faf2ce24c74cf8da607971931576b0ba83e2dc8755af4e8", "sha256:098b681d959ad46239860f217c74a463292b5262fe004da34aa0414fe885a78e", "sha256:12d33c2f4dc442cbdfb0c830f359cfd92e0560c34678a1198ea68f281ada2d21", "sha256:76a1ff61253d86aafba3fd803cc79eb75dd573fb1ee00c6f716a8ea44dcfc414", "sha256:734a6dcc0d105722be038d38341a5f9c30a119082eaac2fa45fb8d51eb335451" ] }, "Metadata": { "LastTagTime": "2025-12-02T04:04:23.335181057Z" }, "Descriptor": { "mediaType": "application/vnd.oci.image.index.v1+json", "digest": "sha256:ce2bd4775ed6859d35f47d65401ee9f35f1dd00b32ed05f0ce38b68aa1830195", "size": 10293 } } ]
-
미해결도커 마스터즈! CI/CD, DevSecOps로 자동화 보안 실무까지!
구글 드라이브 404
안녕하세요. 선생님 공유해주신 root me 관련된 구글 드라이브에 접속되지 않아 문의드립니다.
-
해결됨실무에서 사용중인 AWS 클라우드 IAM 이해와 보안
terraform destroy 로 s3 bucket을 삭제할 경우
1. 무엇을 하고 싶으신가요?해당 실습을 조금 더 빠르고 간편하게 재현하고 싶어서 s3 bucket과 안에 오브젝트 파일을 생성하는 부분까지 테라폼 코드로 프로비저닝 하였습니다. 강의를 보며 결과까지 모두 확인을 하였고, 이제 위 리소스들을 전부 destroy 하고 싶습니다. 2. 언제, 어떤 오류가 발생하시나요?terraform apply를 할 경우,Role 3개와버킷, 버킷 정책, 오브젝트 파일총 6개의 리소스가 생성됩니다. terraform state list를 통해 관리 대상을 확인해보아도 6개의 리소스를 확인할 수 있습니다.그런데 terraform destroy 명령을 수행할 경우버킷을 제외한 5개의 리소스만 삭제 플랜에 출력되는 것을 확인하였고 이대로 진행할 경우결국 empty한 s3 bucket만 남아 따로 cli 명령이나 콘솔에서 삭제를 해주어야합니다. 3. 어떤 시도를 해보셨나요?내부 오브젝트 파일 때문이라는 가설을 세우고force_destroy = true속성을 true로 지정하였지만 버킷 내부 객체까지만 삭제되었고 버킷은 삭제되지 않습니다.이후 권한 문제라는 가설을 세워보았지만 s3 액세스 정책을 deny 기반으로 ListBucket을 지정하였기 때문에 해당 가설도 기각하였습니다. 4. 작성한 코드를 공유해주세요.data "aws_caller_identity" "this" {} # IAM Role resource "aws_iam_role" "this" { count = 2 name = "thbins-${count.index}" path = "/dev/" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Principal = { # AWS = "${data.aws_caller_identity.this.arn}" AWS = "arn:aws:iam::${data.aws_caller_identity.this.account_id}:root" } }, ] }) managed_policy_arns = ["arn:aws:iam::aws:policy/AdministratorAccess"] } resource "aws_iam_role" "this2" { name = "thbins-2" path = "/" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Principal = { # AWS = "${data.aws_caller_identity.this.arn}" AWS = "arn:aws:iam::${data.aws_caller_identity.this.account_id}:root" } }, ] }) managed_policy_arns = ["arn:aws:iam::aws:policy/AdministratorAccess"] } # S3 variable "bucket_name" { description = "S3 bucket name (must be globally unique)" type = string } resource "aws_s3_bucket" "test" { bucket = var.bucket_name force_destroy = true # 버킷 안에 객체를 생성하기 때문에 해당 속성을 true로 지정한다. } data "aws_iam_policy_document" "test_bucket" { statement { sid = "Statement1" effect = "Deny" principals { type = "AWS" identifiers = ["*"] } actions = [ "s3:ListBucket", ] resources = [ aws_s3_bucket.test.arn, "${aws_s3_bucket.test.arn}/*", ] condition { test = "StringNotLike" variable = "aws:PrincipalArn" values = [ # 여기서 account_id를 하드코딩하지 않고 자동으로 맞춰줌 "arn:aws:iam::${data.aws_caller_identity.this.account_id}:role/dev/*", ] } } } resource "aws_s3_bucket_policy" "test" { bucket = aws_s3_bucket.test.id policy = data.aws_iam_policy_document.test_bucket.json } resource "aws_s3_object" "test_file" { bucket = aws_s3_bucket.test.id key = "test_success.txt" content = "This is a test file for IAM path-based S3 access demo.\n" # 선택: 텍스트 파일임을 명시 content_type = "text/plain" }
-
미해결도커 마스터즈! CI/CD, DevSecOps로 자동화 보안 실무까지!
ZAP 자동화 context
안녕하십니까. 실습을 따라하던 와중에 막히는 부분이 있어 질문드립니다. ZAP 실습에서 tools -> Authentication User 테스트를 하고 난 후 저는 자동화 New Plan 창에 Authentication Test라는 Context가 생성되지 않아 질문드립니다.
-
해결됨[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기
gitlab-ci.yml과 CI/CD 파이프라인 까지 수강중입니다.
1. 무엇을 하고 싶으신가요?현재 ocp 로 구축된 서버가 있는데 , 이 서버에 gitlab을 컨테이너로 올려서 구축후에 테스트해보고 싶습니다. 2. 언제, 어떤 오류가 발생하시나요? 3. 어떤 시도를 해보셨나요? 4. 작성한 코드를 공유해주세요.
-
해결됨도커 마스터즈! CI/CD, DevSecOps로 자동화 보안 실무까지!
apache2 접속 문제
안녕하세요. 선생님 수강 중인 학생입니다. 다름이 아니라 vagrant 연습 문제를 하고 있는데 선생님과 똑같이 vagrantfile을 구성했는데 apache2가 설치 조차 되지 않는 문제가 있어서 질문드립니다. vagrant@vagrant:~$ sudo systemctl status apache2 Unit apache2.service could not be found.
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
섹션 4 프로젝트 코드
1. 무엇을 하고 싶으신가요? 섹션 4 프로젝트 코드를 받아 볼 수 있을까요?
-
미해결실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
mysql 접속 에러
1. 무엇을 하고 싶으신가요? 2. 언제, 어떤 오류가 발생하시나요?mysql 비밀번호 'apmsetup' 으로 입력해도 계속하여 같은 오류가 납니다ㅠㅠ 3. 어떤 시도를 해보셨나요?구글링하여 나와있는 해결책 모두 안 통하는데 에러 해결 방법이 뭘까요?4. 작성한 코드를 공유해주세요.
-
해결됨[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기
first before
1개념이해를 도와주세요 before after를 전역으로 사용하면 first 잡에서 호출하지 않아도 실행이 되는 건가요? 그렇다면 모든잡에서 항상 실행되는 건가요? 특정 잡에서는 전역값이 실행 안될 수 있게 설정할 수 있나요?
-
해결됨[DevOps] 빠르고 안전한 어플리케이션 배포 파이프라인(CI/CD) 만들기
Private Subnet과 Gitlab
안녕하세요. 이번에 public subnet 에 있는 bastion host를 통해서 private subnet에 있는 web server라는 ec2에 cli 명령어로 gitlab ee 버젼을 설치해서 도메인(a.test.com)으로 설정하였습니다. 그런데 sudo vi /etc/gitlab/gitlab.rb 파일에 bastion host의 public ip를 넣어야 도메인으로 gitlab server의 사이트로 접속이 되던데.. 이러면 public ip가 그대로 노출될 수도 있어서 도메인으로 바꾸면 사이트의 접속이 막히고 있습니다. 도메인으로 설정을 바꾸면 어떻게 해야하나 질문을 드립니다. CI/CD 과정은 리포지토리는 Gitlab, 빌드과정은 codebuild를 사용하려고 합니다. codebuild와 연결을 할때도 액세스 토큰이 필요해서 이부분은 어떻게 설정해야 하나요?
-
해결됨실무에서 사용중인 AWS 클라우드 IAM 이해와 보안
IRSA 의 토큰이 최대 24시간인데 만료되면 어떻게 되나요?
안녕하세요우선 좋은 강의 감사합니다. 강의 시청 중 IRSA 부분을 진행 중인데, 웬만한 것들은 이해가 되는데 한가지 궁금한 것이 있습니다.결국 파드가 AWS 리소스에 접근할 수 있는 토큰을 특정 마운트 경로에 가지고 있는 것인데, 임시 자격 증명은 영구적인 것이 아니고 최대 24시간까지만 유지가 되는데, 이 유효 시간이 지나면 어떻게 되나요? 예를 들어 파드 A 는 S3 에 접근을 해야 해서 IRSA 를 사용하고 있습니다. 최대 만료 시간인 24시간 지난 후에도 여전히 S3 에 접근이 가능한데, 이게 왜 가능한지가 궁금합니다. 무언가 토큰을 갱신해주는 쿠버네티스 컨트롤러나 오퍼레이터 같은 것이 있는 걸까요?(근데 암만 찾아봐도 mutatingwebhookconfigurations 의 pod-identity-webhook 외에는 관련된 것을 못찾겠네요 ㅜㅜ)
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
default tags , 리소스에 tags 중복 문의
안녕하세요영상에서 default_tags = resource tags가 중복되면 duplicated 에러가 발생한다고 해주셨는데, 제가 재현해보면 중복돼도 에러없이 배포가 됩니다.aws provider는 5.57, terraform은 1.9.1 버전 사용중입니다.해당 링크를 보면 5.0.0 버전부터 중복 가능하게 수정됐다는 내용이 있는 것 같은데 강의 촬영 당시와 현재 버전 차이로 배포가 되는걸까요??
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
테라폼으로 람다 형상 관리 방법
안녕하세요모든 리전 알람에 람다.tf 강의 버전으로 배포하면 람다 콘솔에서 코드를 수정하는 경우 테라폼으로 추적이 안되더라구요.변경점을 추적하는 방법을 찾아보니, 대충 테라폼에서 배포할 때 zip 형태로 말아 배포할때마다 hash값을 비교해서 변경을 감지한다는거 같은데 이도 사실 제가 정확히 이해했는진 모르겠네요.사실 저는 개인적으로 람다가 워낙 자주 수정되니 그냥 최초 배포할 때 이후로 따로 추적은 안하고 git 같은 곳에서 버전관리를 하면 되지 않을까라고 생각합니다.아니면, 람다 함수를 git, s3 등에서 버전을 관리하고 테라폼 모듈에서 source를 git or s3와 같이 지정해주면 될 것 같은데 실제 운영하실 땐 어떤 방식으로 테라폼으로 관리하는지 궁금합니다
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
강의 순서 문의
강의 추천을 받아 구매하게 되었습니다. 무료 강의 + 구매한 강의 총 4개가 있는데 4개 순서를 어떤식으로 들으면 좋을지 문의드립니다. 감사합니다.
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
람다 캐싱 질문
안녕하세요. 4-10 강의를 보고 질문드립니다.람다는 stateless 방식으로 실행된다고 알고 있었는데, 전역 변수가 캐싱이 된다고 설명해주신 이유는 해당 프로젝트 같은 경우 모든 알람이 발생할때마다 실행되니, coldstart가 발생하지 않는다라는걸 전제하에 말씀해주신걸까요? 아니면 람다 자체에서 내부적으로 어떠한 동작에 의해 캐싱이 이루어지는건가요?===이 프로젝트는 모든 알람이 발생할 때마다 람다가 실행되니 coldstart로 응답이 느려질거 같진 않은데요, 만약 5~10분마다 실행되는 람다 함수라면 coldstart에 대한 대책으로 3분정도 주기마다 eventbridge로 람다를 트리거해주는 것도 방법이 될까요?
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
webhook 단점
안녕하세요slack 부분 구성이 좀 궁금해서 일단 해당 부분 강의만 봤는데Webook 단점 영상 중에 강사님이 만드신 Alert이 왔을때 생기는 버튼 및 Log에 대한 쓰레드를 달 수있는 기능은 webhook으로 불가능하다 하셨는데요.그렇다면, 저 기능을 이용하려면 Webhook말고 어떤 기능을 이용해야하나요?감사합니다.
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
for_each 사용 시 key를 가져오는 기준
안녕하세요key로 리소스 유무를 판단하니 중복되면 안된다고 생각해 테스트해보려고 중복된 key를 넣어주고 for_each로 가져오니 상위 key를 가져오는거 같지 않아서 별도 기준이 있는지 그냥 랜덤인지 궁금하여 질문드립니다. # countvariable "user_count" { type = list(string) default = ["hb", "terraform", "aws"] } resource "aws_iam_user" "user" { count = length(var.user_count) name = "${var.user_count[count.index]}-${count.index}" }배포 시 hb-0, terraform-1, aws-2 생성 (리스트의 인덱스 순서대로 가져옴) # for_eachvariable "user_map" { type = map(string) default = { "hb" = "/good/" "terraform" = "/nice/" "hb" = "/bad/" } } resource "aws_iam_user" "users" { for_each = var.user_map name = each.key path = each.value }배포 시 아래와 같이 생성"hb" : "/good"이 아닌 "hb" : "/bad"가 생성 key가 중복되면 중복되는 key는 제외되어 loop는 실제로 2번만 도는걸까요?
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
ModuleNotFoundError: No module named 'pprint' 에러
안녕하세요파이썬 사용 중 제목과 같은 에러가 발생하는데, 따로 건드린 설정 등은 없습니다. 에러는 pip --version, python -m pip install --upgrade pip 등을 사용할 때 발생하고 일반 파이썬 파일 실행 시엔 발생하지 않습니다. (ppirnt 라이브러리 사용시엔 실행x)에러가 발생하는 파이썬 디렉터리에 보니 pprint_1.py 로 되어 있어 pprint.py로 변경하니 에러는 해결되었습니다.혹시 이렇게 파이썬 기본 라이브러리명이 변경되는 경우가 있나요??
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
모듈 vs 리소스
안녕하세요콘솔에서 리소스를 생성하는건 익숙하지만, 테라폼은 이제 막 시작한 경우라면 1, 2번 중 어떤게 더 테라폼 동작 구조를 파악하면서 이해할 수 있는지 궁금합니다.모듈 사용없이 각각의 리소스.tf 을 생성하고 타 리소스에서 참조가 필요한 항목들만 output으로 출력하여 배포처음부터 모듈 형태로 작성하여 배포aws 콘솔로만 주로 작업을 했다보니 리소스들의 옵션은 문서를 보면 어느정도 이해할 수 있는 정도이고, 테라폼 사용 경험은 폴더 분리 없이 한 폴더 내의 resource.tf (ecs.tf, ecr.tf) 를 모두 생성하고 배포해본 정도만 있습니다. 모듈은 경험x
-
해결됨실무에서 사용하는 클라우드 보안 프로그래밍 (AWS, Python, Terraform)
s3 bucket 생성 에러
안녕하세요 너무 질문을 자주 올리는거 같아 민망하네요 ㅎㅎ..강의 수강 중 궁금한 점이 있어 질문드립니다. s3 배포 시 제약조건?멀티 프로바이더 부분에서 s3 배포 시, 서울 리전에만 배포가 안됩니다. (still creating 무한루프)제가 배포하려는 코드는 아래와 같습니다.# provider.tf provider "aws" { region = "ap-northeast-2" } provider "aws" { alias = "apne3" region = "ap-northeast-3" } # main.tf resource "aws_s3_bucket" "apne2" { bucket = "tf-apne2-hb" } # 오사카 리전 resource "aws_s3_bucket" "apne3" { bucket = "tf-apne3-hb" provider = aws.apne3 }서울 리전에 배포할 때 해당 버킷명을 사용할 때만 배포가 안되며, 다른 버킷명이나 다른 리전에 배포하면 잘 배포가 됩니다. 콘솔에서 위와 동일하게 생성해보면 "the ap-northeast-2 location constraint is incompatible for the region specific endpoint this request was sent to." 와 같은 에러가 떨어지는데 처음보는 경우라 혹시 알고 계신게 있는지 궁금해서 질문 남깁니다. vpc 배포 후 provider 변경 resource "aws_vpc" "apne2" { cidr_block = "10.0.0.0/16" } resource "aws_vpc" "apne3" { cidr_block = "10.0.0.0/16" }위처럼 배포 시 서울 리전에 vpc가 2개 생성됐습니다.이후 apne3 vpc 리소스에 provider = aws.apne3을 추가한 후 plan 해보면 서울 리전에 vpc가 삭제되고 오사카 리전에 생기는게 아닌, 서울 리전에도 남고 오사카 리전에도 새로 추가가 됩니다.tfstate 파일에서도 provider와 속성값들이 변경은 되는데 기존 리소스는 왜 삭제되지 않는지 궁금합니다. 추가로 제가 질문을 거의 매일 남기는거 같아서 좀 죄송스럽습니다. 차라리 큰 챕터가 끝낼따마다 궁금한걸 정리한 후 한번에 질문드리면 더 나으실까요??