

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Aurora PostgreSQL-Compatible でのアプリケーションユーザーとロールの作成
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible"></a>

*Amazon Web Services、Abhishek Verma*

## 概要
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-summary"></a>

Amazon Aurora PostgreSQL-Compatible Edition に移行する場合、ソースデータベースに存在するデータベースユーザーとロールは Aurora PostgreSQL -Compatible データベースで作成する必要があります。Aurora PostgreSQL-Compatible でユーザーとロールを作成するには、次の 2 つの方法があります。
+ ターゲットではソースデータベースと同様のユーザーとロールを使用します。この方法では、ユーザーとロールのデータ定義言語 (DDL) がソースデータベースから抽出されます。その後、それらは変換され、ターゲットの Aurora PostgreSQL-Compatible データベースに適用されます。たとえば、ブログ記事「[SQL で Oracle から PostgreSQL にユーザ、ロールと権限をマッピング](https://aws.amazon.com/blogs/database/use-sql-to-map-users-roles-and-grants-from-oracle-to-postgresql)」では、Oracle ソースデータベースエンジンからの抽出の使用について説明しています。
+ 開発、管理およびデータベースでのその他の関連操作の実行によく使用される、標準化されたユーザーとロールを使用してください。これには、各ユーザーが実行する読み取り専用、読み取り/書き込み、開発、管理とデプロイ操作が含まれています。

このパターンには、標準化されたユーザーとロールのアプローチに必要な Aurora PostgreSQL -Compatible でのユーザーとロールの作成に必要なグラントが含まれています。ユーザーとロールの作成手順は、データベースユーザーに与える権限を最小限に抑えるというセキュリティポリシーに従っています。次の表は、ユーザー、対応するロールとデータベース上の詳細を示しています。


| 
| 
| [ユーザー] | ロール | 目的 | 
| --- |--- |--- |
| `APP_read` | `APP_RO` | スキーマ `APP` の読み取り専用アクセスに使用されます | 
| `APP_WRITE` | `APP_RW` | スキーマ `APP` の書き込み操作と読み取り操作に使用されます | 
| `APP_dev_user` | `APP_DEV` | スキーマ `APP_DEV` の開発目的で使用され、スキーマ `APP` への読み取り専用アクセス権が付与されます | 
| `Admin_User` | `rds_superuser` | データベースの管理者操作を実行するために使用されます | 
| `APP` | `APP_DEP` | `APP` スキーマの下にオブジェクトを作成し、または `APP` スキーマにオブジェクトをデプロイするために使用されます | 

## 前提条件と制限事項
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-prereqs"></a>

**前提条件**
+ アクティブな Amazon Web Services (AWS) アカウント
+ PostgreSQL データベース、Amazon Aurora PostgreSQL-Compatible Edition データベースまたは PostgreSQL データベース用の Amazon Relational Database Service (Amazon RDS)

**製品バージョン**
+ PostgreSQL のすべてのバージョン

## アーキテクチャ
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-architecture"></a>

**ソーステクノロジースタック**
+ 任意のデータベース

**ターゲットテクノロジースタック**
+ Amazon Aurora PostgreSQL 互換

**ターゲットアーキテクチャ**

次の図は、Aurora PostgreSQL-Compatible データベースのユーザーロールとスキーマアーキテクチャを示しています。

![\[Aurora PostgreSQL-Comaptible データベース用のユーザーロールとスキーマアーキテクチャ。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/80105a81-e3d1-4258-b3c1-77f3a5e78592/images/b95cb9bc-8bf7-47d1-92e7-66cfb37d7ce7.png)


                                                                                                                                    

**自動化とスケール**

このパターンには、ユーザー、ロールとスキーマ作成スクリプトが含まれており、ソースまたはターゲットデータベースの既存ユーザーに影響を与えることなく複数回実行できます。

## ツール
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-tools"></a>

**AWS サービス**
+ 「[Amazon Aurora PostgreSQL 互換エディション](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」は、PostgreSQL デプロイのセットアップ、運用、スケーリングを支援する、フルマネージド型で ACID 準拠のリレーショナルデータベースエンジンです。

**その他のサービス**
+ [「psql」](https://www.postgresql.org/docs/current/app-psql.html)は、PostgreSQL データベースをインストールするたびにインストールされるターミナルベースのフロントエンドツールです。SQL、PL-PGSQL とオペレーティングシステムのコマンドを実行するためのコマンドラインインターフェースを備えています。
+ [「pgAdmin」](https://www.pgadmin.org/) はPostgreSQL用のオープンソース管理ツールです。データベースオブジェクトの作成、管理、使用を支援するグラフィカルインターフェイスを提供します。

## エピック
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-epics"></a>

### ユーザーとロールの作成
<a name="create-the-users-and-roles"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| デプロイユーザーの作成 | デプロイメントユーザー `APP` は、デプロイ中にデータベースオブジェクトの作成と変更に使用されます。以下のスクリプトを使用して、スキーマ `APP` にデプロイユーザーロール `APP_DEP` を作成します。アクセス権を検証して、このユーザーには必要なスキーマ `APP` 内のオブジェクトを作成する権限のみが付与されていることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 読み取り専用ユーザーを作成します。 | 読み取り専用ユーザー `APP_read` は、スキーマ `APP` の読み取り専用操作を実行するために使用されます。以下のスクリプトを使用して読み取り専用ユーザーを作成します。アクセス権を検証して、このユーザーがスキーマ `APP` 内のオブジェクトを読み取る権限のみを持っていることおよびスキーマ `APP` に作成された新しいオブジェクトに対する読み取りアクセス権を自動的に付与する権限を持っていることを確認します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 読み取り/書き込みユーザーを作成します。 | 読み取り/書き込みユーザー `APP_WRITE` は、スキーマ `APP` の読み取りと書き込み操作の実行に使用されます。以下のスクリプトを使用して読み取り/書き込みユーザーを作成し、そのユーザーに `APP_RW` ロールを付与します。アクセス権を検証して、このユーザーがスキーマ `APP` 内のオブジェクトに対してのみ読み取り権限と書き込み権限を持っていることを確認し、スキーマ `APP` 内に作成された新しいオブジェクトに対する読み取りと書き込みアクセス権を自動的に付与します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) |  | 
| 管理者ユーザーを作成します。 | 管理者ユーザー `Admin_User` は、データベースの管理操作を実行するために使用されます。これらの操作の例は `CREATE ROLE` と `CREATE DATABASE` `Admin_User` です。`rds_superuser` はビルトインロールを使用してデータベースの管理操作を実行します。以下のスクリプトを使用して、データベース内の管理者ユーザー `Admin_User` の権限を作成してテストします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 
| 開発ユーザーを作成します。 | 開発ユーザー `APP_dev_user` には、ローカルスキーマ `APP_DEV` にオブジェクトを作成する権限とスキーマ `APP` の読み取りアクセス権が付与されます。以下のスクリプトを使用して、データベース内のユーザー `APP_dev_user` の権限を作成してテストします。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-application-users-and-roles-in-aurora-postgresql-compatible.html) | DBA | 

## 関連リソース
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-resources"></a>

PostgreSQL ドキュメント
+ 「[ロールの作成](https://www.postgresql.org/docs/9.1/sql-createrole.html)」
+ 「[ユーザーの作成](https://www.postgresql.org/docs/8.0/sql-createuser.html)」
+ 「[定義済みのロール](https://www.postgresql.org/docs/14/predefined-roles.html)」

 

## 追加情報
<a name="create-application-users-and-roles-in-aurora-postgresql-compatible-additional"></a>

PostgreSQL 14 エンハンスメント

PostgreSQL 14 には、事前定義されたロールのセットが用意されており、一般的に必要とされる特定の特権的な機能や情報へのアクセスを可能にしています。管理者 (`CREATE ROLE` 権限を持つロールを含む) は、これらのロールや環境内の他のロールをユーザーに付与して、指定された機能や情報にアクセスできるようにすることができます。

管理者は `GRANT` コマンドを使用してこれらのロールへのアクセス権をユーザーに付与できます。たとえば、`pg_signal_backend` ロールに `Admin_User` を付与するには、以下のコマンドを実行します。

```
GRANT pg_signal_backend TO Admin_User;
```

この `pg_signal_backend` ロールは、管理者が信頼できる非スーパーユーザーロールが他のバックエンドにシグナルを送信できるようにすることを目的としています。詳細については、「[PostgreSQL 14 の機能拡張](https://www.postgresql.org/docs/14/predefined-roles.html)」を参照してください。

アクセスの微調整

場合によっては、より詳細なアクセス（テーブルベースのアクセスや列ベースのアクセスなど）をユーザーに提供することが必要になる場合があります。このような場合は、追加ロールを作成して、それらの権限をユーザーに付与することができます。詳細については、「[PostgreSQL Grants](https://www.postgresql.org/docs/8.4/sql-grant.html)」を参照してください。