투케이2K

349. (TWOK/ERROR) [AWS] aws 플릿 프로비저닝 템플릿 등록 요청에서 403 AccessDenied 에러 발생 이슈 - 템플릿 포맷 형식 , 람다 실행 권한 본문

투케이2K 에러관리

349. (TWOK/ERROR) [AWS] aws 플릿 프로비저닝 템플릿 등록 요청에서 403 AccessDenied 에러 발생 이슈 - 템플릿 포맷 형식 , 람다 실행 권한

투케이2K 2026. 5. 29. 20:00
728x90
반응형

[환경 설정 및 설명]

프로그램 : AWS / IoT Core

설 명 : [AWS] aws 플릿 프로비저닝 템플릿 등록 요청에서 403 AccessDenied 에러 발생 이슈 - 템플릿 포맷 형식 , 람다 실행 권한

 

[설 명]

--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------

- 제목 : [AWS] aws 플릿 프로비저닝 템플릿 등록 요청에서 403 AccessDenied 에러 발생 이슈 - 템플릿 포맷 형식 , 람다 실행 권한


- 테스트 환경 : AWS / Provisioning / Templates


- 사전) 👉 Fleet provisioning 플릿 프로비저닝 수행 방법 간략 설명 : 

  >> 클레임에 의한 프로비저닝 : 

    - 디바이스는 프로비저닝 클레임 인증서 및 프라이빗 키 (특수 용도의 자격 증명) 가 내장된 상태로 제조될 수 있습니다
    - 디바이스에 내장 된 인증서가 AWS IoT에 등록된 경우, 이 서비스에서 해당 인증서를 디바이스가 일반 작업에 사용할 수 있는 고유한 디바이스 인증서와 교환할 수 있습니다
  
  >> 신뢰할 수 있는 사용자에 의한 프로비저닝 : 

    - 클레임 프로비저닝과 가장 큰 차이로는 클레임 프로비저닝는 초기 프로비저닝 수행에 필요한 인증서를 기기에 내장하지만,
      신뢰할 수 있는 사용자에 의한 프로비저닝은 CSR (Certificate Signing Request) 인증서 신청 요청 후 응답 받은 인증서를 기기에 전달해 프로비저닝을 
      수행하는 방식입니다.
    - 신뢰할 수 있는 사용자에 의한 프로비저닝을 수행하기 위해서는 신뢰할 수 있는 사용자의 액세스 및 권한을 관리해야 합니다.
      신뢰할 수 있는 사용자를 인증하고 이 절차를 수행하는 데 필요한 AWS IoT 기능 및 API 작업에 대한 액세스 권한을 부여하는 신뢰할 수 있는 사용자에 대한 계정을 제공 및 유지 관리

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------

1. 🟥 AWS 프로비저닝 수행 시 템플릿 등록 요청 부분에서 프로비저닝 함수에 연결 된 람다 함수 실행 및 로직 처리에 필요한 일부 권한이 누락 되어 403 AccessDenied 에러 발생 이슈


2. 🟥 403 AccessDenied 에러가 발생할 수 있는 원인으로 template 템플릿 등록 시 parameter 내에 인증에 필요한 필수 key , value 값이 누락 되는 증상도 있지만, 로그 확인 시 파라미터는 정상 확인


3. 🟥 AWS Cloud Watch Logs 확인 시 람다 함수가 실행 된 적이 없는 것으로 보여, IAM 역할에서 role 정보 확인 시 람다 함수에서 로직 처리에 필요한 일부 권한이 누락 된 것 확인

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------

1. 🟦 AWS 프로비저닝 수행 및 템플릿 등록 요청 부분 람다 함수 실행 및 로직 처리에 필요한 일부 권한 추가 반영 실시


2. 🟦 AWS IAM 역할에서 role 정보 확인 방법 : 

  >> AWS 콘솔 대시보드에서 IAM 검색

  >> IAM 메뉴 > 액세스 관리 > 정책 메뉴 진입

  >> IoT Core 프로비저닝 템플릿 등록에 연결 된 람다 함수 정책 명칭 찾기

  >> 정책 정보에서 > 권한 메뉴 클릭

  >> 정책에 정의 된 권한 정보 확인 및 수정
    
    - [수정 예시] AWS_PROV_TEMPLATE_HOOK-lamda-control-policy


3. 🟦 전체 기능 동작에 필요한 권한 정리 : 

  {
      "Version": "2026-05-29",
      "Statement": [
          {
              "Action": [
                  "iam:CreateRole",
                  "iam:AttachRolePolicy",
                  "iam:CreatePolicy",
                  "iam:PassRole",
                  "iot:CreatePolicy",
                  "iot:GetPolicy",
                  "iot:AttachPolicy",
                  "iot:CreatePolicyVersion",
                  "iot:GetPolicyVersion",
                  "iot:CreateThing",
                  "iot:DeleteThing",
                  "iot:RegisterThing",
                  "iot:CreateKeysAndCertificate",
                  "iot:GetThingShadow",
                  "iot:DeleteThingShadow",
                  "iot:UpdateThingShadow",
                  "iotjobsdata:*",
                  "iot:CreateJob",
                  "iot:DeleteJob",
                  "iot:ListJobs",
                  "iot:UpdateJob",
                  "iot:DescribeJob",
                  "lambda:CreateFunction",
                  "lambda:InvokeFunction",
                  "s3:*",
                  "s3-object-lambda:*"
              ],
              "Effect": "Allow",
              "Resource": "*",
              "Sid": "Statement1"
          },
          {
              "Action": "iam:PassRole",
              "Condition": {
                  "StringEquals": {
                      "iam:PassedToService": "lambda.amazonaws.com"
                  }
              },
              "Effect": "Allow",
              "Resource": "*"
          }
      ]
  }

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------

▶️ [Web] 자바스크립트 paho-mqtt 라이브러리 사용해 AWS Iot Core Fleet Provisioning 프로비저닝 동작 로직 정리

https://kkh0977.tistory.com/8623

https://blog.naver.com/kkh0977/224179137373?trackingCode=blog_bloghome_searchlist


▶️ [Android] aws 프로비저닝 템플릿 등록 시 statusCode 403 AccessDenied 에러 발생 - 액세스가 거부되었습니다.

https://kkh0977.tistory.com/7581

https://blog.naver.com/kkh0977/223721911160?trackingCode=blog_bloghome_searchlist


▶️ [Android] aws 플릿 프로비저닝 템플릿 Rejected , Accepted 구독 에러 - 연결 유실 , template name error

https://kkh0977.tistory.com/6894

https://blog.naver.com/kkh0977/223561187456?trackingCode=blog_bloghome_searchlist


▶️ [Android] aws 프로비저닝 템플릿 등록 statusCode 400 InvalidPayload Message cannot be parsed

https://kkh0977.tistory.com/7580

https://blog.naver.com/kkh0977/223720523889?trackingCode=blog_bloghome_searchlist


▶️ [Android] 안드로이드 Aws Iot Core 특정 thing 사물 삭제 수행 시 403 Access Denied 에러 발생

https://kkh0977.tistory.com/7922

https://blog.naver.com/kkh0977/223834339241?trackingCode=blog_bloghome_searchlist

--------------------------------------------------------------------------
 
728x90
반응형
Comments