Notice
Recent Posts
Recent Comments
Link
투케이2K
172. (TWOK/WORK) [업무 이슈] 디바이스 Aws Job OTA 펌웨어 업데이트 시 STS 임시 자격 증명 S3 Presigned URL 프리 사인 주소 파싱 문제 발생 본문
투케이2K 업무정리
172. (TWOK/WORK) [업무 이슈] 디바이스 Aws Job OTA 펌웨어 업데이트 시 STS 임시 자격 증명 S3 Presigned URL 프리 사인 주소 파싱 문제 발생
투케이2K 2025. 7. 29. 20:02728x90
[제 목]
[업무 이슈] 디바이스 Aws Job OTA 펌웨어 업데이트 시 STS 임시 자격 증명 S3 Presigned URL 프리 사인 주소 파싱 문제 발생
[내 용]
------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------
- 제목 : [업무 이슈] 디바이스 Aws Job OTA 펌웨어 업데이트 시 STS 임시 자격 증명 S3 Presigned URL 프리 사인 주소 파싱 문제 발생
- 테스트 환경 : Aws 콘솔 대시 보드 / Aws 콘솔 수동 Job 생성 / Aws S3 에 업로드 한 펌웨어 파일 다운로드 주소 GetPresigned Url 생성 전달
- 사전) AWS S3 간략 설명 :
>> Aws S3 버킷 이란 데이터 (사진, 동영상, 문서 등) 객체 를 업로드할 수 있는 컨테이너 (디렉토리) 입니다
>> Aws S3 버킷은 온라인 스토리지 서비스로 HTTP/HTTPS 를 통한 API 를 사용해 파일 업로드 및 다운로드 처리를 할 수 있습니다
- 사전) AWS S3 PreSignedUrl 간략 설명 :
>> AWS PreSignedUrl 은 Amazon S3에 저장된 객체에 대해 일시적인 접근 권한을 부여하는 URL입니다
- PreSignedUrl 을 통해 인증 없이도 제한된 시간 동안 S3 객체에 접근하거나 업로드할 수 있습니다
>> AWS PreSignedUrl 은 Get 정보 요청 용도와, Put 업로드 용도로 구분할 수 있습니다
>> AWS PreSignedUrl 사용 목적 및 장점 :
- (사용 목적) 다운로드 사용자에게 S3 파일을 직접 제공 (예: 이미지, 문서 등)
- (사용 목적) 업로드 사용자로부터 파일을 S3에 직접 업로드 받기 (예: 프로필 사진 업로드)
- (사용 목적) 보안 유지 S3 버킷을 public으로 만들지 않고도 안전하게 파일 공유 가능
- (장점) 보안성: S3 버킷을 공개하지 않아도 안전하게 파일 공유 가능
- (장점) 유연성: 원하는 객체에만 접근 허용 가능
- (장점) 시간 제한: URL이 자동으로 만료되어 보안 유지
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------
1. 기존 IAM 계정 AccessKey, SecretKey 정보를 사용해 AWS S3 Get 파일 다운로드 PreSignedUrl 정보를 생성 했지만,
보안 강화로 인해 STS 임시 정보 사용해 AWS S3 Get 파일 다운로드 PreSignedUrl 정보 생성 시 URL 버퍼 길이가 이전 보다 길어져서
디바이스에서 펌웨어 파일 다운로드 URL 을 파싱하지 못하는 이슈 발생
2. 디바이스 펌웨어 파일 다운로드 URL 주소는 특정 버퍼 [150] 길이를 지정해 놓고 파싱 하는 로직으로 되어 있는 상태
3. IAM 계정으로 S3 파일 다운로드 PreSignedUrl 생성 예시 :
>> 버킷 명 : service
>> 다운로드 파일 명 : private.txt
>> URL 주소 : https://service.s3.ap-northeast-2.amazonaws.com/control/private.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AK..7Q%2F20250618%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Date=20250618T000124Z&X-Amz-Expires=3600&X-Amz-Signature=bd..86&X-Amz-SignedHeaders=host
4. STS 임시 자격 정보로 S3 파일 다운로드 PreSignedUrl 생성 예시 :
>> 버킷 명 : service
>> 다운로드 파일 명 : private.txt
>> URL 주소 : https://service.ap-northeast-2.amazonaws.com/control/private.txt?X-Amz-Security-Token=IQ..........................VW&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20250721T052120Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=AS..st&X-Amz-Signature=f3..183
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------
1. AWS S3 에 특정 펌웨어 파일 업로드 수행
2. AWS STS 임시 자격 증명 사용해 펌웨어 파일 다운로드 Get PreSignedUrl 생성 수행
3. AWS JobDocument 문서 생성 및 펌웨어 다운로드 URL 주소를 지정
4. AWS Job 생성 및 특정 사물 OTA 원격 펌웨어 업데이트 요청 수행
5. 디바이스 로그에서 펌웨어 다운로드 URL 파싱 부분에서 에러가 발생한 것 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------
1. 디바이스 소스코드에서 특정 버퍼 길이를 지정해서 URL 주소를 파싱하던 로직을 가변 문자열 길이로 받아서 파싱하도록 변경 요청
2. 가변 문자열 길이로 받아서 펌웨어 파일 다운로드 URL 파싱 테스트 확인 :
>> 펌웨어 파일 다운로드 Get PreSignedUrl 정상 파싱 확인
>> 실제 Get 요청으로 펌웨어 파일 정상 다운로드 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------
[AWS 원격 펌웨어 업데이트 OTA 수동 job 생성 및 특정 사물 notify 펌웨어 업데이트 요청 방법 정리]
https://blog.naver.com/kkh0977/223944636139?trackingCode=blog_bloghome_searchlist
[자바스크립트 AWS STS 임시 자격 증명 사용해 S3 Get PreSignedUrl 프리 사인 URL 주소 생성]
https://blog.naver.com/kkh0977/223938740405?trackingCode=blog_bloghome_searchlist
[기능 개선] Aws S3 파일 다운로드 및 업로드 시 PreSignedUrl 프리 사인 URL 방식으로 대체 요청 - 액세스키, 시크릿키 사용 제거
https://blog.naver.com/kkh0977/223903777386?trackingCode=blog_bloghome_searchlist
[자바스크립트 AWS STS 임시 자격 증명 조회 방법 - AccessKeyId, SecretAccessKey, SessionToken]
https://blog.naver.com/kkh0977/223901300334?trackingCode=blog_bloghome_searchlist
------------------------------------------------------------------------------
728x90
반응형
'투케이2K 업무정리' 카테고리의 다른 글
Comments
