기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Cognito 자격 증명으로 권한 부여
Amazon Cognito 자격 증명에는 인증된 자격 증명과 인증되지 않은 자격 증명이라는 두 가지 유형이 있습니다. 앱이 인증되지 않은 Amazon Cognito 자격 증명을 지원하는 경우 인증이 수행되지 않으므로 사용자가 누구인지 알 수 없습니다.
인증되지 않은 자격 증명: 인증되지 않은 Amazon Cognito 자격 증명의 경우 인증되지 않은 자격 증명 풀에 IAM 역할을 연결하여 권한을 부여합니다. 알 수 없는 사용자가 사용할 수 있도록 하려는 리소스에 대해서만 액세스 권한을 부여하는 것이 좋습니다.
중요
에 연결하는 인증되지 않은 Amazon Cognito 사용자의 경우 IAM 정책에서 매우 제한된 리소스에 대한 액세스 권한을 부여하는 것이 AWS IoT Core좋습니다.
인증된 자격 증명: 인증된 Amazon Cognito 자격 증명의 경우 다음 두 곳에서 권한을 지정해야 합니다.
-
인증된 Amazon Cognito 자격 증명 풀에 IAM 정책 연결 및
-
Amazon Cognito 자격 증명(인증된 사용자)에 AWS IoT Core 정책을 연결합니다.
AWS IoT Core에 연결하는 인증되지 않은 Amazon Cognito 사용자에 대한 정책 예시
다음 예제에서는 Amazon Cognito 자격 증명의 IAM 정책 및 IoT 정책 모두에 대한 권한을 보여줍니다. 인증된 사용자가 디바이스별 주제(예: device/DEVICE_ID/status)에 게시하려고 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/
Client_ID
" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID
/status" ] } ] }
다음 예제는 Amazon Cognito 인증되지 않은 역할의 IAM 정책에 대한 권한을 보여줍니다. 인증되지 않은 사용자가 인증이 필요 없는 디바이스별 주제 이외의 주제에 게시하려고 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/
non_device_specific_topic
" ] } ] }
GitHub 예제
의 다음 예제 웹 애플리케이션은 인증된 사용자에 대한 정책 연결을 사용자 가입 및 인증 프로세스에 통합하는 방법을 GitHub 보여줍니다.
Amplify는 서비스와 통합되는 웹 및 모바일 애플리케이션을 구축하는 데 도움이 되는 도구 및 AWS 서비스 세트입니다. Amplify에 대한 자세한 내용은 Amplify 프레임워크 설명서
두 예 모두 다음 단계를 수행합니다.
-
사용자가 계정에 가입하면 애플리케이션에서 Amazon Cognito 사용자 풀과 자격 증명을 생성합니다.
-
사용자가 인증하면 애플리케이션이 정책을 생성하여 자격 증명에 연결합니다. 이렇게 하면 사용자에게 게시 및 구독 권한이 부여됩니다.
-
사용자는 애플리케이션을 사용하여 MQTT 주제를 게시하고 구독할 수 있습니다.
첫 번째 예제에서는 인증 AttachPolicy
API 작업 내에서 직접 작업을 사용합니다. 다음 예제에서는 Amplify 및 를 사용하는 React 웹 애플리케이션 내에서 이 API 호출을 구현하는 방법을 보여줍니다 AWS IoT Device SDK for JavaScript.
function attachPolicy(id, policyName) { var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint}); var params = {policyName: policyName, target: id}; console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id); Iot.attachPolicy(params, function(err, data) { if (err) { if (err.code !== 'ResourceAlreadyExistsException') { console.log(err); } } else { console.log("Successfully attached policy with the identity", data); } }); }
이 코드는 AuthDisplay.js
두 번째 예제는 Lambda 함수에서 AttachPolicy
API 작업을 구현합니다. 다음 예제에서는 Lambda가 이 API 호출을 사용하는 방법을 보여줍니다.
iot.attachPolicy(params, function(err, data) { if (err) { if (err.code !== 'ResourceAlreadyExistsException') { console.log(err); res.json({error: err, url: req.url, body: req.body}); } } else { console.log(data); res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body}); } });
이 코드는 app.jsiot.GetPolicy
함수 안에 나타납니다.
참고
Amazon Cognito Identity 풀을 통해 얻은 AWS 자격 증명으로 함수를 호출하면 Lambda 함수의 컨텍스트 객체에 에 대한 값이 포함됩니다context.cognito_identity_id
. 자세한 내용은 다음을 참조하세요.