Skip to content

Commit

Permalink
ja translate for authentication pages (#424)
Browse files Browse the repository at this point in the history
* translate index.mdx

* translate api-key.md

* token.md

* translate permission pages

* fix
  • Loading branch information
Yoshiitaka authored Sep 13, 2023
1 parent e5bbd2b commit 92e4032
Show file tree
Hide file tree
Showing 4 changed files with 318 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
sidebar_position: 10
title: API Keys
sidebar_label: API Keys
description: Momento API キーとは何か、どのように作成し、どのように使用するかを学びます。
---

# Momento API keys

APIキーは、プログラム的な使用を目的とした、長期間の利用できるものです。これらのキーは、統合されたアプリケーションに特定のキャッシュやトピックスへのアクセスを許可します。API キーを作成する際、[Momento コンソール](https://console.gomomento.com/tokens) から 2 つのオプションが表示されます:

1. "super-user"キーは、キャッシュの作成と削除、キャッシュ項目の設定と取得、トピックのパブリッシュとサブスクライブなど、アカウント内のすべてにアクセスできるようにするキーです。
2. "A fine-grained access control (FGAC)"キーは、キャッシュアイテムの設定と取得、トピックのパブリッシュとサブスクライブなど、データ操作のみに制限ができるキーです。

:::info

Momento SDKを使用して"super-user" APIキーを作成することはできません。しかし、"A fine-grained access control (FGAC)"キーを作成することは可能です!
詳しくは[Auth API reference page](/develop/api-reference/auth.md)をご覧ください。

:::

## APIキーを作成する

SDKを使用してAPIキーを作成することもできますが、一般的には[Momento コンソール](https://console.gomomento.com/tokens)を使用して作成することをお勧めします。このコンソールを使用することで、長期間使用するキーを視覚的に監視・管理することができ、誤ってアカウントのセキュリティホールを開けないようにすることができます。

### ステップ 1: サインアップするか、Momento コンソールにログインする

[Momento コンソール](https://console.gomomento.com/tokens)にアクセスし、指示に従ってメールアドレス、Googleアカウント、またはGitHubアカウントでログインします。

![Image of Momento console landing page](/img/getting-started/console.png)

### ステップ 2: API キーを作成する

コンソールで、[API Keys](https://console.gomomento.com/tokens)のメニューオプションを選択します。

APIキーのページで、キャッシュが存在する場所に一致する情報を選択します:

1. クラウドプロバイダー
2. リージョン
3. Key Type
3. (オプション) Expiration date

![Image showing the fields to create a new API key](/img/getting-started/select-provider-region.png)

入力が完了したら、**Generate**ボタンをクリックしてAPIキーを作成します!

キーの値を直接コピーして安全な場所に保存するか、**Download JSON** ボタンをクリックしてキーと有効期限をお使いのPCにダウンロードすることができます。

### ステップ 3: セキュアに!

APIキーは長期間有効であり、通常、高レベルのアクセスを許可します。このことを念頭に置き、APIキーは値を暗号化し、プレーンテキストの閲覧を防ぐ場所に安全に保管するようにしてください。

アプリケーションがクラウドでホストされている場合、[AWS Secrets Manager](https://aws.amazon.com/secrets-manager/)[Azure Key Vault](https://learn.microsoft.com/en-us/azure/key-vault/general/overview)、または[GCP Secret Manager](https://cloud.google.com/secret-manager)のようなサービスを使うことができます。

APIキーの保管は、あなたの実装と標準的なコーディングプラクティスによって異なりますが、すべてのアプリケーションで一貫していることが1つあります。**安全に保管してください!**

## 有効期限

APIキーを作成する際、有効期限のないものと、一定期間後に失効するものを選択することができます。**有効期限のないキーを作成することはお勧めしません。**
これは、キーが漏洩した場合のセキュリティリスクとなります。

Momento コンソールには、有効期限の設定オプションがいくつか用意されています。有効期限が切れる前に新しい API キーを作成し、アプリケーションでローテーションすることを忘れないでください!

## ユースケース

認証にAPIキーを**使わない**理由はたくさんありますが、使うべき理由もいくつかあります。

* すべての使い方がプログラム的でサーバーサイドで利用している。
* 月/年単位でローテーションされる、より長寿命なAPI キーでも構わない。
* セッショントークンを作成する必要がある。("super-user"を利用する必要がある場合)

体験してみる準備はできていますか?[Momento コンソール](https://console.gomomento.com/tokens)にアクセスして、APIキーを取得してください!
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
sidebar_position: 2
title: Authentication with Momento
pagination_prev: null
sidebar_label: Authentication
description: Momentoでの認証方法について紹介します。
---

Momentoを試してみることにしましたね!最初のセットアップと、その後、アプリから呼び出しができるようにする方法について説明します。

Momentoのサービスを利用するには、さまざまな方法があります:

* [Momento コンソール](https://console.gomomento.com)を使ってブラウザで利用する。
* [APIキー](/develop/authentication/api-keys.md)を使って、長期的にAPIキーを保存して利用する。
* [トークン](/develop/authentication/tokens.md)を使用した短期的かつ限定的な範囲で利用する。

これらの方法には様々なユースケースと実装があります。あなたが構築しているアプリケーションの種類によっては、短期間でかつスコープが限定されたトークンを大量にユーザーに発行することを選択するかもしれません。
そのような場合は、[tokens](/develop/authentication/tokens.md)のページをチェックしてください。
もしかしたら、APIキーを作成して1年間利用する。そんな時は、[APIキー](/develop/authentication/api-keys.md)のページをご覧ください。

どれが自分に向いているか決めるのにお困りですか?お任せください👇

![Table of differences between API keys and tokens](/img/api-keys-vs-tokens.png)

まだどの選択を取れば良いか困っていますか?次のページにある詳細なドキュメントをご覧になるか、[Discord](https://discord.com/invite/3HkAKjUZGq)にメッセージをお気軽に投げてください!
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
---
sidebar_position: 30
title: Permissions
sidebar_label: Permissions
description: APIキーとトークンを作成する際に利用可能な権限について説明します。
---

# Permissions

自分のリソースにアクセスできなくなるまでは、楽しいことばかりです。リソースにアクセスするといえば、まさにここで話すことでもあります。

注意点として、Momentoでは主に2つの認証方法があります:

* [API キー](/develop/authentication/api-keys.md): プログラムで使用するための、長寿命で耐久性があります。
* [トークン](/develop/authentication/tokens.md): 個人 (ユーザーまたはデバイス) が一時的に使用する、短命で限定された範囲のものです。

APIキーは[Momento コンソール](https://console.gomomento.com/tokens)で直接作成できますが、トークンはプログラムで作成する必要があります。
APIキーやトークンの権限を制限する際のオプションについてをここでは説明します。

## Scope

API キーを作成する際には `PermissionScope` オブジェクトを作成します。
トークンを作成する際には `TokenScope` オブジェクトを作成します。これらのオブジェクトはほとんど同じですが、1つだけ大きな違いがあります。
まず、類似点です。

### Roles

Momento には、スコープオブジェクトを作成する際に使用する、事前に作成されたロールが用意されています 。👇

#### Cache roles

* *readwrite* - キャッシュデータへのフルアクセスを提供します。
* *writeonly* - 書き込み操作のみにアクセスできます(`set``sortedSetIncrementScore``listPopFront` など)。
* *readonly* - 読み込み操作 (`get`, `dictionaryFetch`, `setFetch` など) のみにアクセスできます。これらは非破壊的な操作です。

#### Topic roles

* *publishsubscribe* - トピックデータへのフルアクセスを提供します。
* *publishonly* - 書き込み操作 (`publish`) のみにアクセスできます。
* *subscribeonly* - 読み取り操作 (`subscribe`) のみにアクセスできます。

### Cache

信じられないかもしれませんが、キャッシュとトピックのパーミッションを作成する際には、キャッシュ名を指定する必要があります。
トピックは技術的にはキャッシュそのものを使用しませんが、一種の名前空間としてキャッシュを使用します。
そのため、スコープを構築する際には、どのような場合でもキャッシュ名を指定する必要があります。

キャッシュ名は文字列で指定するか、SDKからインポートした値を使用します。トピック名も同様です。

#### キャッシュの例

```json
{
"permissions": [
{
"role": "readonly",
"cache": "demo"
}
]
}
```

もしくは

```JavaScript
import { AllCaches } from '@gomomento/sdk';

const scope = {
permissions: [
{
role: 'readonly',
cache: AllCaches
}
]
};
```

#### トピックの例

```json
{
"permissions": [
{
"role": "readonly",
"cache": "demo",
"topic": "test"
}
]
}
```

もしくは

```JavaScript
import { AllCaches, AllTopics } from '@gomomento/sdk';

const scope = {
permissions: [
{
role: 'readonly',
cache: AllCaches,
topic: AllTopics
}
]
};
```

### アイテムレベルの制限

これまで説明してきたことはすべて、APIキーとトークンの両方に適用されます。
しかしここで、トークン特有の制限について説明する必要があります。: **アイテムレベルの制限**です。

キャッシュへのアクセスを許可するとき、個々のキーや特定のプレフィックスで始まるキーにアクセスを制限することができます。
キャッシュ内の特定の2つのキーにユーザーを制限するパーミッションをセットする例を見てみましょう。

```json
{
"permissions": [
{
"role": "readonly",
"cache": "demo",
"item": {
"key": "mappings"
}
},
{
"role": "readwrite",
"cache": "demo",
"item": {
"key": "hits"
}
},
]
}
```

これは、`mappings`キーへ*read only*でアクセスし、*demo*キャッシュ内の`hits`キーへ*read and write*でアクセスすることを明示的に許可することになります。
複数のキーに対して同じロールを付与したい場合は、上記と同様にパーミッションのセットを作成し、必要なロールを指定します。1つのパーミッションに複数のキーを渡すことはできません。

キーの範囲でアクセスを許可したい場合は、プレフィックスを使用することもできます。プレフィックスとは、特定の文字列で始まるすべてのキーにアクセスを許可するという意味です。マルチテナントのシステムで、テナントIDを含む形式でキャッシュキーを持っていたとしましょう。特定のテナントのすべてのキーへの読み取りアクセスを許可する権限セットを作成するには、次のようにします:

```json
{
"permissions": [
{
"role": "readonly",
"cache": "demo",
"item": {
"keyPrefix": "MYTENANTID-"
}
}
]
}
```

この権限セットで生成されたトークンの利用者は、`MYTENANTID-`で始まるキーからの読み取りが許可されます。異なるテナントIDで始まるキーから読み込もうとすると、認証エラーになります。

Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
sidebar_position: 20
title: Tokens
sidebar_label: Tokens
description: Momentoトークンとは何か、トークンの作成方法、トークンの使用方法について説明します。
---

import { SdkExampleTabs } from "@site/src/components/SdkExampleTabs";
// This import is necessary even though it looks like it's un-used; The inject-example-code-snippet
// plugin will transform instances of SdkExampleTabs to SdkExampleTabsImpl
import { SdkExampleTabsImpl } from "@site/src/components/SdkExampleTabsImpl";

# Momento tokens

トークンは、ユーザーセッションのような一時的な状況で使用されることを目的とした、短命でスコープが限定された値です。
ユーザーログインのようなソフトウェアライフサイクルイベントでは、セッションの標準的な期間だけ有効なトークンが発行されることがよくあります。

Momento トークンは、*データプレーン*にのみアクセスできます。つまり、有効なトークンを持つユーザは、キャッシュの作成、削除、フラッシュなどを行うことができません。また、新しいトークンを作成することもできません。

完全に特権化されたトークンを持つユーザーは、以下のアクションを実行できます:

* あらゆるキャッシュのキャッシュアイテムを追加/編集/削除する。
* 任意のキャッシュ内の任意のトピックをパブリッシュ、サブスクライブする。
* どのキャッシュでも、インクリメント API を使ってキャッシュの値を増やすことができます。

システム要件に基づいてトークンのアクセスを制限するのはあなた次第です。

## トークンを作成する

[APIキー](/develop/authentication/api-keys.md)を作成する手順とは異なり、トークンを作成する唯一の方法はコードから作成することです。Momentoコンソールから作成することはできません。

以下は、さまざまな権限でトークンを作成する例です:

<SdkExampleTabs snippetId={'API_GenerateAuthToken'} />

トークン作成の詳細については、[APIリファレンスページ](/develop/api-reference/auth.md)を参照してください。

## 有効期限

Momento トークンには有効期限が必要です。**トークンの最大有効期限は1時間**です。トークンの有効期限が切れると、新しいトークンを作成する必要があります。

有効期限が切れたトークンでmomentoを呼び出しても、提供された認証情報がサービスに接続できなかったことを示す `AUTHENTICATION_ERROR` 応答が返されます。

:::tip

トークンはリフレッシュできません。そのため、トークンの有効期限が切れると、永久に使えなくなります。セッションを継続する場合は、新しいものを作成して発行する責任があります。

:::

## ユースケース

これらのトークンは、以下のユースケースに最適です:

* フロントエンド開発にMomentoを使用する
* IoT デバイスとの通信
* 特定のリソースへの一時的なアクセス権の発行
* ログイン時にユーザーに認証情報を提供する

## データ制限

トークンの一般的な使用例は、リソースの小さなサブセットのみにアクセスを制限することです。
トークンを*読み取り専用*アクセスで提供するように機能を制限できるだけでなく、個々のキャッシュアイテムやトピックにスコープすることもできます。

データ制限で何ができるかを完全に理解するには、[permissions page](/develop/authentication/permissions.md)をチェックしてください。

0 comments on commit 92e4032

Please sign in to comment.