

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# スナップショットの共有
<a name="working-with-snapshot-share-snapshot"></a>

1 つの既存の手動スナップショットについては、そのスナップショットへのアクセスを許可することにより、他の AWS 顧客アカウントのユーザーと共有することができます。各スナップショットは最大 20 個、各 AWS Key Management Service (AWS KMS) キーは最大 100 個まで許可できます。つまり、1 つの KMS キーで暗号化された 10 個のスナップショットがある場合、10 個の AWS アカウントに各スナップショットを復元することを許可できます。または、最大 100 個のアカウントのその他の組み合わせや、スナップショットごとに 20 個のアカウントを超えないその他の組み合わせを許可できます。アクセス権限が付与されたいずれかのアカウントのユーザーとしてログインされた担当者は、スナップショットを表示することも、当該アカウントでスナップショットを復元して新しい Amazon Redshift クラスターを作成することもできます。例えば、実稼働用およびテスト用に個別の AWS 顧客アカウントを使用する場合、ユーザーは本番用アカウントを使用してログオンし、テスト用アカウントのユーザーとスナップショットを共有することができます。テスト用アカウントのユーザーとしてログオンされた担当者は、テストまたは診断作業のためのテスト用アカウントによって所有される新しいクラスターを作成するためにスナップショットを復元することができます。

手動スナップショットは、それが作成された AWS 顧客アカウントによって永続的に所有されます。スナップショットを所有するアカウントのユーザーのみが、スナップショットへのアクセスを他のアカウントに許可したり、アクセス許可を取り消したりすることができます。アクセス権限が付与されたアカウントのユーザーは、そのアカウントと共有されているスナップショットの表示または復元が行えるだけで、共有されているスナップショットのコピーや削除を行うことはできません。アクセス許可はスナップショットの所有者がそれを取り消すまで有効です。アクセス許可が取り消されると、前にアクセス権限を付与されたユーザーはスナップショットの可視性を失い、スナップショットを参照する新しいアクションを起動できなくなります。アクセス権限が取り消される際、アカウントがスナップショットを復元するプロセスの途中にあった場合、復元は完了するまで実行されます。スナップショットにアクティブ認可がある限り、そのスナップショットを削除することはできません。まず、すべてのアクセス許可を取り消す必要があります。

AWS 顧客アカウントには、該当するアカウントによって所有されるスナップショットへのアクセスが常に許可されます。所有者アカウントへのアクセスを許可する試みまたは取り消す試みを行うと、エラーが発生します。非アクティブ AWS 顧客アカウントによって所有されているスナップショットを復元または表示することはできません。

AWS カスタマーアカウントへのアクセスを許可した場合、そのアカウントのユーザーがスナップショットに対してアクションを実行するには、それを許可するポリシーを持つロールを引き受ける必要があります。
+ スナップショット所有者アカウントのユーザーがスナップショットへのアクセスを許可および取り消しできるのは、当該スナップショットを含むリソース仕様でそのようなアクションの実行を許可する IAM ポリシーを持つロールを引き受けた場合に限られます。例えば、次のポリシーでは、AWS アカウント `012345678912` のユーザーまたはロールは、`my-snapshot20130829` という名前のスナップショットへのアクセスを他のアカウントに許可できます。

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement":[
      {
        "Effect":"Allow",
        "Action":[
            "redshift:AuthorizeSnapshotAccess",
            "redshift:RevokeSnapshotAccess"
            ],
        "Resource":[
             "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829"
            ]
      }
    ]
  }
  ```

------
+ スナップショットを共有している AWS アカウントのユーザーがそのスナップショットに対してアクションを実行するには、そのようなアクションを実行するためのアクセス許可が必要です。そのためには、ポリシーをロールに割り当て、そのロールを引き受けます。
  + スナップショットを一覧表示するか、または表示するためには、前述ユーザーは `DescribeClusterSnapshots` アクションを許可する IAM ポリシーを持っている必要があります。コードの例を以下に示します。

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

****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
        {
          "Effect":"Allow",
          "Action":[
              "redshift:DescribeClusterSnapshots"
              ],
          "Resource":[
               "*"
              ]
        }
      ]
    }
    ```

------
  + ユーザーがスナップショットを復元するには、`RestoreFromClusterSnapshot` アクションを許可する IAM ポリシーを持つロールを引き受ける必要があり、その IAM ポリシーにはユーザーが作成するクラスターとスナップショットの両方に対応するリソース要素が含まれている必要があります。例えば、アカウント `012345678912` のユーザーがスナップショット `my-snapshot20130829` をアカウント `219876543210` と共有している場合、スナップショットを復元してクラスターを作成するには、アカウント `219876543210` のユーザーが次のようなポリシーを持つロールを引き受ける必要があります。

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

****  

    ```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
        {
          "Effect":"Allow",
          "Action":[
              "redshift:RestoreFromClusterSnapshot"
              ],
          "Resource":[
               "arn:aws:redshift:us-east-1:012345678912:snapshot:*/my-snapshot20130829",
               "arn:aws:redshift:us-east-1:219876543210:cluster:from-another-account"
              ]
        }
      ]
    }
    ```

------
  + スナップショットへのアクセスが AWS アカウントから取り消された後、そのアカウントのユーザーはスナップショットにアクセスできなくなります。これは、これらのアカウント内に、以前に共有したスナップショットリソースへのアクションを許可する IAM ポリシーがある場合でも同様です。

## コンソールを使用したクラスタースナップショットの共有
<a name="snapshot-share"></a>

コンソールでは、自分が所有する手動スナップショットへのアクセスを他のユーザーに許可することができます。そのアクセス許可については後で不要になった場合に取り消すことができます。

**別のアカウントとスナップショットを共有するには**

1. AWS マネジメントコンソール にサインインして、[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/) で Amazon Redshift コンソールを開きます。

1. ナビゲーションメニューで、**[Clusters]** (クラスター)、**[Snapshots]** (スナップショット)、次に共有する手動スナップショットを選択します。

1. [**アクション**] に [**Manual snapshot settings (手動スナップショット設定)**] を選択して、手動スナップショットのプロパティを表示します。

1. [**アクセスの管理**] セクションで共有するアカウント (複数可) を入力してから、[**保存**] を選択します。

## 暗号化されたスナップショットの共有に関するセキュリティ上の考慮事項
<a name="snapshot-share-access-kms-key"></a>

 Redshift は、暗号化されたスナップショットに対するアクセス権を提供するときに、スナップショットの作成に使用された AWS KMS カスタマーマネージドキーがアカウントまたは復元を実行するアカウントと共有されることを必要とします。キーが共有されていない場合にスナップショットの復元を試みると、アクセス拒否エラーが発生します。受信側のアカウントには、共有スナップショットを復元するための追加のアクセス許可は必要ありません。スナップショットアクセスを認可し、キーを共有する場合、ID 認可アクセスにはスナップショットの暗号化に使用されたキーに対する `kms:DescribeKey` のアクセス許可が必要です。この権限については、「[AWS KMS アクセス権限](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)」で詳しく説明します。詳細については、Amazon Redshift API リファレンスドキュメントの「[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)」を参照してください。

カスタマーマネージドキーポリシーは、プログラム的に、または AWS Key Management Service コンソールで更新できます。

**注記**  
デフォルトの KMS キーを使用している場合は、スナップショットを共有するために AWS KMS でアクションを実行したり、何かを変更したりする必要はありません。

### 暗号化されたスナップショットの AWS KMS キーへのアクセスの許可
<a name="snapshot-share-access-kms-key-allowing-access"></a>

暗号化されたスナップショットの AWS KMS カスタマーマネージドキーを共有するには、以下の手順を実行してキーポリシーを更新します。

1. キーを共有する AWS アカウントの Amazon リソースネーム (ARN) を KMS キーポリシーの `Principal` として使用して KMS キーポリシーを更新します。

1.  `kms:Decrypt` アクションを許可します。

以下のキーポリシー例では、ユーザー `111122223333` が KMS キーの所有者であり、ユーザー `444455556666` がキーを共有するアカウントです。このキーポリシーは、ユーザー `444455556666` のルート AWS アカウント ID の ARN をポリシーの `Principal` として含め、`kms:Decrypt` アクションを許可することによって、サンプル KMS キーへのアクセス権を AWS アカウントに付与します。

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

****  

```
{
    "Id": "key-policy-1",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/KeyUser",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

カスタマーマネージド KMS キーに対するアクセス権を付与した後は、暗号化されたスナップショットを復元するアカウントが AWS Identity and Access Management (IAM) ロールまたはユーザーを作成する必要があります (まだ作成していない場合)。さらに、その AWS アカウントは、KMS キーを使用して暗号化されたデータベーススナップショットを復元することを許可する IAM ポリシーをその IAM ロールまたはユーザーにアタッチする必要もあります。

AWS KMS キーに対するアクセス権の付与に関する詳細については、「AWS Key Management Service デベロッパーガイド」の「[他のアカウントのユーザーに KMS キーの使用を許可する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)」を参照してください。

キーポリシーの概要については、「[Amazon Redshift が AWS KMS を使用する方法](https://docs.aws.amazon.com/kms/latest/developerguide/services-redshift.html)」を参照してください。