

# Aurora DSQL の認証および認可
<a name="authentication-authorization"></a>

Aurora DSQL はクラスター認可に IAM ロールとポリシーを使用します。データベース認可のために、IAM ロールを [PostgreSQL データベースロール](https://www.postgresql.org/docs/current/user-manag.html)に関連付けます。このアプローチは、[IAM のメリット](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-iam-features.html)と [PostgreSQL の権限](https://www.postgresql.org/docs/current/user-manag.html)を組み合わせたものです。Aurora DSQL は、これらの機能を使用して、クラスター、データベース、データに対する包括的な認可とアクセスポリシーを提供します。

## IAM を使用したクラスターの管理
<a name="authentication-authorization-iam-role-manage"></a>

クラスターを管理するには、認証と認可に IAM を使用します。

**IAM 認証**  
Aurora DSQL クラスターを管理するときに IAM ID を認証するには、IAM を使用する必要があります。[AWS マネジメントコンソール](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)、[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)、または [AWS SDK](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) を使用して認証を提供できます。

**IAM 認可**  
Aurora DSQL クラスターを管理するには、Aurora DSQL の IAM アクションを使用して認可を付与します。例えば、クラスターを記述するには、次のポリシーアクションの例のように、IAM ID に IAM アクション `dsql:GetCluster` のアクセス許可があることを確認します。  

```
{
  "Effect": "Allow",
  "Action": "dsql:GetCluster",
  "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/my-cluster"
}
```
詳細については、「[IAM ポリシーアクションを使用したクラスターの管理](#authentication-authorization-iam-policy-manage)」を参照してください。

## IAM を使用したクラスターへの接続
<a name="authentication-authorization-iam-role-connect"></a>

クラスターに接続するには、認証と認可に IAM を使用します。

**IAM 認証**  
クラスターに接続する認可を持つ IAM ID を使用して一時認証トークンを生成します。詳細については「[Amazon Aurora DSQL での認証トークンの生成](SECTION_authentication-token.md)」を参照してください。

**IAM 認可**  
クラスターのエンドポイントへの接続を確立するために使用する IAM ID に、次の IAM ポリシーアクションを付与します。  
+ `dsql:DbConnectAdmin` ロールを使用している場合は、`admin` を使用します。Aurora DSQL は、このロールを自動的に作成および管理します。次のサンプル IAM ポリシーアクションは、`admin` が *my-cluster* に接続することを許可します。

  ```
  {
    "Effect": "Allow",
    "Action": "dsql:DbConnectAdmin",
    "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/my-cluster"
  }
  ```
+ カスタムデータベースロールを使用している場合は、`dsql:DbConnect` を使用します。データベースで SQL コマンドを使用して、このロールを作成および管理します。次のサンプル IAM ポリシーアクションは、カスタムデータベースロールが *my-cluster* に最大 1 時間接続することを許可します。

  ```
  {
    "Effect": "Allow",
    "Action": "dsql:DbConnect",
    "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/my-cluster"
  }
  ```
接続を確立すると、ロールは接続に対して最大 1 時間承認されます。

## PostgreSQL データベースロールと IAM ロールを使用したデータベースの操作
<a name="authentication-authorization-database-roles-manage"></a>

PostgreSQL は、ロールの概念を使用してデータベースアクセス許可を管理します。ロールは、ロールの設定方法に応じて、データベースユーザーまたはデータベースユーザーのグループと考えることができます。SQL コマンドを使用して PostgreSQL ロールを作成します。データベースレベルの認可を管理するには、PostgreSQL データベースロールに PostgreSQL アクセス許可を付与します。

Aurora DSQL は、`admin` ロールとカスタムロールの 2 種類のデータベースロールをサポートしています。Aurora DSQL は、Aurora DSQL クラスターで事前定義された `admin` ロールを自動的に作成します。`admin` ロールは変更できません。`admin` としてデータベースに接続すると、SQL を発行して、IAM ロールに関連付ける新しいデータベースレベルのロールを作成できます。IAM ロールがデータベースに接続できるようにするには、カスタムデータベースロールを IAM ロールに関連付けます。

**認証**  
`admin` ロールを使用してクラスターに接続します。データベースを接続したら、次の例のように、`AWS IAM GRANT` コマンドを使用して、カスタムデータベースロールをクラスターへの接続が承認された IAM ID に関連付けます。  

```
AWS IAM GRANT custom-db-role TO 'arn:aws:iam::account-id:role/iam-role-name';
```
詳細については[クラスターへの接続をデータベースロールに許可する](using-database-and-iam-roles.md#using-database-and-iam-roles-custom-database-roles)を参照してください。

**Authorization**  
`admin` ロールを使用してクラスターに接続します。SQL コマンドを実行してカスタムデータベースロールを設定し、アクセス許可を付与します。詳細については、「PostgreSQL ドキュメント」の「[PostgreSQL データベースロール](https://www.postgresql.org/docs/current/user-manag.html)」および「[PostgreSQL の権限](https://www.postgresql.org/docs/current/ddl-priv.html)」を参照してください。

## Aurora DSQL での IAM ポリシーアクションの使用
<a name="authentication-authorization-iam-policy"></a>

使用する IAM ポリシーアクションは、クラスターへの接続に使用するロールが、`admin` またはカスタムデータベースロールのいずれかによって異なります。このポリシーは、このロールに必要な IAM アクションにも依存します。

### IAM ポリシーアクションを使用したクラスターへの接続
<a name="authentication-authorization-iam-policy-connect"></a>

デフォルトのデータベースロール `admin` を使用してクラスターに接続する場合は、認可付きの IAM ID を使用して、次の IAM ポリシーアクションを実行します。

```
"dsql:DbConnectAdmin"
```

カスタムデータベースロールを使用してクラスターに接続するときは、まず IAM ロールをデータベースロールに関連付けます。クラスターへの接続に使用する IAM ID には、次の IAM ポリシーアクションを実行する権限が必要です。

```
"dsql:DbConnect"
```

カスタムデータベースロールの詳細については、「[データベースロールと IAM 認証の使用](using-database-and-iam-roles.md)」を参照してください。

### IAM ポリシーアクションを使用したクラスターの管理
<a name="authentication-authorization-iam-policy-manage"></a>

Aurora DSQL クラスターを管理するときは、ロールが実行する必要があるアクションに対してのみポリシーアクションを指定します。例えば、ロールがクラスター情報のみを取得する必要がある場合は、次のサンプルポリシーのように、ロールのアクセス許可を `GetCluster` および `ListClusters` アクセス許可のみに制限できます。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "dsql:GetCluster",
        "dsql:ListClusters"
      ],
      "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/my-cluster"
    }
  ]
}
```

------

次のポリシー例は、クラスターを管理するために使用可能なすべての IAM ポリシーアクションを示しています。

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "dsql:CreateCluster",
        "dsql:GetCluster",
        "dsql:UpdateCluster",
        "dsql:DeleteCluster",
        "dsql:ListClusters",
        "dsql:TagResource",
        "dsql:ListTagsForResource",
        "dsql:UntagResource"
      ],
      "Resource" : "*"
    }
  ]
}
```

------

## IAM と PostgreSQL を使用した認可の取り消し
<a name="authentication-authorization-revoke"></a>

データベースレベルのロールにアクセスするための IAM ロールのアクセス許可を取り消すことができます。

**クラスターへの接続に関する管理者権限の取り消し**  
`admin` ロールを使用してクラスターに接続する認可を取り消すには、IAM アイデンティティの `dsql:DbConnectAdmin` へのアクセスを取り消します。IAM ポリシーを編集するか、アイデンティティからポリシーをデタッチします。  
IAM ID から接続認可を取り消すと、Aurora DSQL はその IAM ID からのすべての新しい接続試行を拒否します。IAM ID を使用するアクティブな接続は、接続の期間中は認可されたままになる場合があります。接続の期間の詳細については、「[クォータと制限](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/CHAP_quotas.html)」を参照してください。

**クラスターへの接続に関するカスタムロール認可の取り消し**  
`admin` 以外のデータベースロールへのアクセスを取り消すには、IAM アイデンティティの `dsql:DbConnect` へのアクセスを取り消します。IAM ポリシーを編集するか、アイデンティティからポリシーをデタッチします。  
データベースの `AWS IAM REVOKE` コマンドを使用して、データベースロールと IAM の関連付けを削除することもできます。データベースロールからのアクセスの取り消しの詳細については、「[IAM ロールからのデータベース認可の取り消し](using-database-and-iam-roles.md#using-database-and-iam-roles-revoke)」を参照してください。

事前定義された `admin` データベースロールのアクセス許可を管理することはできません。カスタムデータベースロールのアクセス許可を管理する方法については、「[PostgreSQL の権限](https://www.postgresql.org/docs/current/ddl-priv.html)」を参照してください。権限の変更は、Aurora DSQL が変更トランザクションを正常にコミットした後、次のトランザクションで有効になります。