SharedIT | 묻고 답하기(AMP)

terraform(테라폼) AWS 문의

최근에 IaC(코드형 인프라) 구축을 하고 싶어서 테라폼이라는 오픈소스를 폐쇄망 아마존 개발서버에 테스트 하고 있습니다. 

환경변수까지 설정하고 공식문서 json 코드 오타 없이 iam 사용자 생성을 간단하게 하려고 합니다. 


terraform init  -> plan 까지 정상인데 마지막 apply 에서 에러가 발생합니다. 

에러 내용은 간단하게 말씀드리면 IAM 생성할 수 있는 권한이 없다고하는데 지금 현재 풀로 권한 때렸습니다... ㅜ 

vpc 도 디폴트이고 aws cli 초기 설정도 문제 없습니다.  코드에 리전은 한국으로 했는데 이게 문제가 될까요ㅠㅜ? 

폐쇄망이다보니 도메인주소 허용을 현재

registry.terraform.io 

releases.hashicorp.com  허용 상태입니다. 혹시 웹방화벽에서 막혀서 그럴까요ㅜ ? 

에러내용은 다음과 같습니다. 

creating iam user : accessdenied user arn... is not authorized to perform iam createUsser on resource arn... with an explicit deny in an identity-based policy status code 403 request id : 23....


자문을 구하고자 글을 쓰게 되었습니다...ㅜ 항상 감사하고 죄송합니다ㅜ


2개의 답변이 있습니다.

Genghis Khan
  0 추천 | 4달 전

참고하시면 될것 같습니다

에러 메시지로 보면, 권한의 문제라기보다 ACCESS KEY / SECRET ACCESS KEY 를 등록하는 과정에서 오타가 발생한 것 같습니다.

보통 Secret Access Key를 복사할 때 잘못 복사하는 경우가 많은데, 기존의 키를 삭제하시고 재발급 받으셔서 재시도해보시는 걸 추천드립니다.

그리고 로컬에서 aws sts get-caller-identity 명령어를 날려보시면 어떤 권한으로 실행되는지 보실 수 있습니다. 

여기서 user/terraform-101의 ARN이 나오지 않는다면 설정이 잘못된 것입니다.

benjamin park | 4달 전

넵 정말 감사합니다!! ㅎ

앵그리파파
  0 추천 | 4달 전

표시되는 오류메시지를 살펴보면 필요한 권한이 있음에도 불구하고 다른 IAM 사용자를 생성하려는 IAM 사용자에 대한 자격 증명 기반 정책에 명시적인 거부가 있을 수 있다는 것을 나타냅니다.

관련하여 몇가지 확인하는데 참고하세요. 

  • 1.부된 정책에 명시적인 거부가 없는지 테라폼 적용을 수행하는 IAM 사용자에게 연결된 정책을 다시 한번 확인해 보세요.
    - 사용자 정책과 사용자가 속한 그룹에 연결된 모든 정책 및
      IAM 역할에 대한 정책(해당되는 경우)

  • 2.'iam createUser' 작업을 명시적으로 거부할 수 있는 자격 증명 기반 정책(사용자에게 직접 연결됨) 및 그룹 정책 확인

  • 3.IAM 관련 문제는 흔하지 않지만 테라폼 구성의 지정된 지역이 필요한 권한이 있는 지역과 일치하는지 확인 

  • 4.폐쇄된 네트워크에서 작업하고 있으므로 필요한 아웃바운드 네트워크 트래픽이 허용되는지 확인. (AWS 서비스와의 통신을 방해할 수 있는 제한 사항이 있는지 확인)

  • 5.때때로 AWS CloudTrail 로그는 요청이 거부된 이유에 대한 추가 정보를 제공하니 'iam createUser' 관련된 로그 확인

참고로, AWS CLI를 사용하여 권한 확인할 수 있으니, IAM 사용자에게 실제로 필요한 권힌이 있는지 확인해보세요.

(사용 예)
aws iam simulate-principal-policy --policy-source-arn arn:aws:iam::account-id:user/username --action-names iam:CreateUser --resource-arns arn:aws:iam::account-id:user/otheruser


앵그리파파 | 4달 전

(사용 예)


  • YOUR_ACCOUNT_ID, YOUR_USERNAME, OTHER_USERNAME 적절하게 변경

간단하게 설명하면, 
--policy-source-arn : 정책을 시뮬레이션하려는 IAM 사용자의 AWS 리소스 이름(ARN)
--action-name : 평가할 작업의 이름, 여기서는 iam CreateUser
--resource-arns : 정책을 시뮬레이션하려는 리소스의 AWS 리소스 이름(ARN), 여기서는 생성하려는 사용자 (OTHER_USERNAME) 의 ARN 

이 명령은 시뮬레이션된 정책 평가에 대한 정보가 포함된 JSON을 반환합니다. 
해당 작업이 허용되거나 거부되는지 확인하려면 '허용됨' 필드를 찾아보세요.

(출력 결과 예)

{

    "EvaluationResults": [

        {

            "EvalActionName": "iam:CreateUser",

            "EvalResourceName": "arn:aws:iam::YOUR_ACCOUNT_ID:user/OTHER_USERNAME",

            "EvalDecision": "allowed",

            "MatchedStatements": [

                {

                    "SourcePolicyId": "example-policy-id",

                    "SourcePolicyType": "IAM Policy",

                    "StartPosition": {

                        "Line": 1,

                        "Column": 1

                    },

                    "EndPosition": {

                        "Line": 12,

                        "Column": 32

                    }

                }

            ]

        }

    ],

    "IsTruncated": false

}



benjamin park | 4달 전

구체적인 설명 정말 감사합니다ㅜ!  init plan 까지되는데 마지막에 apply 명령어치면 에러가 또 나네여ㅜ 말씀하신대로 하나하나 체크해보려고합니다 감사합니다~


앵그리파파 | 3달 전

화이팅 하세요.^^