2

このチュートリアルhttps://serverless-stack.com/に従って、AWSサービス(S3、Lambda、Cognito、DynamoDB)とReactJSを使用したサーバーレスフレームワークを使用してサーバーレスアプリケーションを作成しました。チュートリアルでは、AWS Cognito User PoolとIdentity Poolを使用してユーザー管理と認証の目的で使用します。このチュートリアルのアプリケーションは、アプリケーション内でロールベースのアクセス制御を持たない「ノートを取る」アプリケーションです。AWSを使用したロールベースのアクセス制御の実装サーバーレスのCognito

しかし、私が作成しているアプリケーションにはRBACが必要で、それについて読んだら、RBACは「ユーザーグループ」または「連合アイデンティティ」のいずれかを使用して実装できることを理解しました。しかし、私はまだ私のアプリケーションのいずれかを正しく使用する方法を見つけることができませんでした。

この

は、私は、ユーザーのプールを作成し、今

  1. までのアプリケーションで行われ、プールID
  2. を追加しましたアプリケーションクライアントを生成し、
  3. が作成されたアプリケーションのクライアントIDを生成し、展開しているものです私の
  4. 認証プロバイダとして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へのアクセスを制限するにはどうすればよいですか?

答えて

0

いくつかの方法があります。さらに多くの点では、IDプールはまったく必要ありません。

  • Cognitoのユーザープール内では、それぞれのグループにはmay have an IAM roleが定義されています。
  • また、(完全なIAM設定ではなく)APIゲートウェイでの承認が必要な場合は、カスタム認証者のラムダゲートウェイに接続すると、Cognitoに対する認証と、認証されたユーザーの詳細に基づく認証の両方を行うことができます。
+0

"ゲートウェイにアタッチされたカスタム認可ラムダは、Cognitoに対する認証と、認証されたユーザーの詳細に基づく承認の両方を行うことができます。カスタムオーソライザがCognitoとユーザーの詳細を使って認証する方法を教えてください。 –

関連する問題