🙌

Amplify CLI API(GraphQL)/Authorization rules

2023/08/13に公開

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