사용자가 pdf 파일을 업로드 할 수있게하려는 Ember 앱을 작성 중이며 파일 저장을 위해 AWS S3을 사용하고 있습니다. AWS cred를 하드 코딩하고 싶지 않기 때문에 AWS Cognito를 사용하여 파일을 업로드/다운로드하려는 사용자를 S3에 인증하는 임시 자격 증명을 만듭니다. 사용자를 위해 AWS에 ID 풀을 만들고 인증 된 사용자와 인증되지 않은 사용자 (인증 된 사용자는 내 S3 버킷 중 하나에 대한 읽기 전용 액세스 권한을 얻음)에 대한 관련 IAM 역할을 구성했습니다. 내 ID 풀에 대한 인증 공급자로 Devils를 사용하는 Rails 백엔드를 사용하고 있습니다. 내 프런트 엔드 인증을 위해 Ember Simple Auth를 제공된 Devise 인증 자와 함께 사용 중이므로 토큰을 요청하려면 사용자가 로그인해야합니다.AWS Cognito 쿠키의 임시 자격증 명
1) 내 백엔드에서 AWS Cognito 식별 아이디와 토큰을 가져 오기 (새로 만들기)
2) 내 백엔드에 루비 AWS SDK에서 get_open_id_token_for_developer_identity 방법을 사용하여 : 여기 임시 자격 증명을 얻기 위해 수행하는 단계입니다 ID 및 토큰을 사용하여 CognitoIdentityCredentials 객체가 임시 자격 증명을 얻고 쿠키에 쿠키를 저장합니다 (js-cookie 사용).
코드 :
var AWS = window.AWS;
AWS.config.region = "us-west-2";
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-west-2:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
IdentityId: response.identity_id,
Logins: {
'cognito-identity.amazonaws.com': response.token
}
});
AWS.config.credentials.get(function() {
var date = new Date(AWS.config.credentials.expireTime);
Cookies.set("cognito_creds", { accessKeyId: AWS.config.credentials.accessKeyId, secretAccessKey: AWS.config.credentials.secretAccessKey, sessionToken: AWS.config.credentials.sessionToken }, { expires: date });
});
나는 그런 쿠키 AWS 자격 증명 같은 중요한 정보를 저장하는 큰 아뇨, 확실히 안전하지 않습니다 없다는 것을 이해합니다. 그러나 HTTPS를 사용하고 있으며 자격 증명은 한 시간 후에 만료되며 자격 증명과 관련된 IAM 역할은 S3 버킷 중 하나에 대한 읽기 전용 액세스 만 제공합니다.
제 질문은 보안 위험이 있습니까?이 신임 정보를 쿠키로 저장하면 백엔드에서 토큰을 새로 고칠 필요가 없습니다. 그렇지 않으면이 접근법이 너무 취약해질 수 있습니까?
EDIT : 내가 생각하고있는 대체 솔루션은 프론트 엔드의 Ember 서비스에 대한 자격 증명으로 자격 증명을 저장하고 페이지가 다시로드 될 때마다 백엔드에서 토큰을 얻는 것이지만, 매우 효율적으로 보입니다.