🙌
Amplify CLI API(GraphQL)/Authorization rules
Authorization rules
- @authディレクティブを用いることで認証を設定できる
- 認証が特に設定されていない場合は拒否されるようになっている
- 以下の例では"owner"がTodoのcrudを認可されています。
type Todo @model @auth(rules: [{ allow: owner }]) {
content: String
}
- 複雑な認証ルールを設定することもできます。readに関しては全てのユーザに許可されますが、crudはownerのみに許可されます。
type Todo @model @auth(rules: [
{ allow: public, operations: [read]},
{ allow: owner }
]) {
content: String
}
認証の種類
use case | Strategy | Provider |
---|---|---|
appsync api keyがあれば誰でもアクセス可 | public | apiKey |
本番環境のパブリックデータアクセスに推奨。 | public | iam |
ユーザごとのデータアクセス。 | owner | userPools/oidc |
サインインしたユーザであれば誰でも可。 | private | userPools/oidc/iam |
ユーザグループごとのデータアクセス。 | group | userPools/oidc |
lambda関数にカスタマイズしたアクセス。 | custom | function |
- ユーザーごとのアクセス
type Todo @model @auth(rules: [{ allow: owner, operations: [create, read, update] }]) {
content: String
}
- 裏側ではownerのフィールドをそれぞれのレコードに保存している。
- ユーザグループごとのアクセス
type Salary @model @auth(rules: [{ allow: groups, groups: ["Admin"] }]) {
id: ID!
wage: Int
currency: String
}
Discussion