このチュートリアルhttps://serverless-stack.com/に従って、AWSサービス(S3、Lambda、Cognito、DynamoDB)とReactJSを使用したサーバーレスフレームワークを使用してサーバーレスアプリケーションを作成しました。チュートリアルでは、AWS Cognito User PoolとIdentity Poolを使用してユーザー管理と認証の目的で使用します。このチュートリアルのアプリケーションは、アプリケーション内でロールベースのアクセス制御を持たない「ノートを取る」アプリケーションです。AWSを使用したロールベースのアクセス制御の実装サーバーレスのCognito
しかし、私が作成しているアプリケーションにはRBACが必要で、それについて読んだら、RBACは「ユーザーグループ」または「連合アイデンティティ」のいずれかを使用して実装できることを理解しました。しかし、私はまだ私のアプリケーションのいずれかを正しく使用する方法を見つけることができませんでした。
この
は、私は、ユーザーのプールを作成し、今- までのアプリケーションで行われ、プールID
- を追加しましたアプリケーションクライアントを生成し、
- が作成されたアプリケーションのクライアントIDを生成し、展開しているものです私の
- 認証プロバイダとしてCognitoを使用し、上記で生成されたプールIDとアプリケーションクライアントIDを使用してIDプールを持つAPIにアクセス制御を適用し、次のポリシーでロールを適用しました
ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*",
"cognito-identity:*"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::YOUR_S3_UPLOADS_BUCKET_NAME/${cognito-identity.amazonaws.com:sub}*"
]
},
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:YOUR_API_GATEWAY_REGION:*:YOUR_API_GATEWAY_ID/*"
]
}
]
}
これは、誰もがすべてのAPIにアクセスすることができます。各ユーザーに役割を割り当て、役割に基づいて特定のAPIへのアクセスを制限するにはどうすればよいですか?
"ゲートウェイにアタッチされたカスタム認可ラムダは、Cognitoに対する認証と、認証されたユーザーの詳細に基づく承認の両方を行うことができます。カスタムオーソライザがCognitoとユーザーの詳細を使って認証する方法を教えてください。 –