본문 바로가기

AWS IoT/안드로이드 앱

(5)
[AWS IoT] 어플리케이션 (5) : 소스 코드 GitHub 자바에서 JSON 문서를 분석하기 위해 GSON 클래스를 사용했습니다. GSON을 사용하기 위해서는 사용할 JSON 형식에 대응하는 클래스를 미리 생성해야 합니다. LEDButtonCommand, LEDButtonResult, LEDButtonShadow 이 세개의 클래스가 이것을 위한 것입니다. GSON에 대한 자세한 설명은 구글에 많으니 여기서 따로 설명하지 않겠습니다. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:소스와 바이너리 형태로 재배포와 사용은 다음 조건들을 만족한 경우에만..
[AWS IoT] 어플리케이션 (4) : 보안 장단점, operation key를 사용한 이유 단점 이전 포스트에 설명한 안드로이드 앱 클라이언트의 IoT Publish에 대한 정책의 일부입니다. 어플리케이션 (2) : 정책 & 신뢰 관계 { "Effect": "Allow", "Action": "iot:Publish", "Resource": [ "arn:aws:iot:us-east-1::topic/LEDButton*/command", "arn:aws:iot:us-east-1::topic/$aws/things/LEDButton*/shadow/get" ] } 안드로이드 앱 클라이언트가 사물에 명령(command) 토픽을 발행(Publish)할 때 "LEDButton*/command" 토픽이 사용됩니다. * 는 와일드 카드를 의미하며 어떤 문자열도 허용된다는 의미입니다. 즉, 위와 같이 설정하면 "LE..
[AWS IoT] 어플리케이션 (3) : CognitoCachingCredentialsProvider 객체 CognitoCredentialProvider는 Cognito ID Pool에 연결되어 STS의 "임시 자격 증명"을 관리하는 AWSCredentialsProvider 인터페이스 구현 객체입니다. 그리고 CognitoCachingCredentialProvider는 CognitoCredentialProvider 클래스를 상속하고, 네트워크 연결 횟수를 줄이기 위해 캐시를 사용하는데 이것을 위해 SharedPreferences 정도만 추가한 것으로 알고 있습니다. AWSCredentialsProvider 인터페이스 구현 객체는 AWS Android SDK의 각 서비스 객체를 해당 서비스에 연결할 때 인증 수단으로 사용됩니다. 즉, STS의 "임시 자격 인증"을 원하는 서비스에 연결하는 역할을 합니다. Git..
[AWS LED Button] 어플리케이션 (2) : 정책 & 신뢰 관계 먼저 Cognito에서 ID Pool을 생성한 후 IAM에서 "인증된 역할"과 "인증되지 않은 역할"(ID Pool 생성시 IAM에 자동 생성)에 대한 권한을 설정(원하는 정책을 만들어서 해당 역할에 붙이거나 해당 역할에서 인라인 정책을 생성)해 주어야 합니다. 또한 역할은 IAM에 정의되어 있지만, 이 역할에 의해 생성된 "임시 자격 증명"이 Security Token Service(STS)에 있기 때문에, 역할 맡는 동작(AssumeRole)은 STS가 담당합니다. AssumeRole에 대한 동작은 따로 해당 정책의 신뢰 관계 정책에서 설정해야 합니다. 다음은 제가 IAM에서 "인증된 역할"에 설정한 정책과 신뢰 관계입니다. 정책 * 는 와일드 카드를 의미합니다. 그리고 사물(Thing)의 정책과 비..
[AWS LED Button] 어플리케이션 (1) : 시스템 흐름 시스템 / 인증 흐름 AWS 서비스들은 위와 같이 유기적으로 연결될 수 있습니다. 그리고 대부분의 AWS 프로젝트는 몇가지 서비스가 연동되어 구성됩니다. Cognito 모바일 앱과 웹에 가입, 로그인 기능을 제공하고, 이에 대한 권한을 부여하는 AWS 서비스입니다. Cognito는 Cognito User Pool과 Cognito Federated Identities Pool(ID Pool)로 나뉩니다. Cognito User Pool AWS에서 제공하는 Identity Provider입니다. 링크를 걸어 놨지만 간단히 예를 들면, 요즘 많은 앱이나 웹에서 "구글 아이디로 로그인"이라는 기능을 볼 수 있는데 그것이 구글에서 제공하는 Identity Provider입니다. 주의할 것은 Amazon에서도 Id..