

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

# AWS KMS API と AWS SDK for PHP バージョン 3 を使用したキーの操作
<a name="kms-example-keys"></a>

 AWS Key Management Service (AWS KMS) のプライマリリソースは です[AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)。KMS キーを使用してデータを暗号化できます。

以下の例では、次の方法を示しています。
+ [CreateKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createkey) を使用してカスタマー KMS キーを作成する。
+ [GenerateDataKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#generatedatakey) を使用してデータキーを生成する。
+ [DescribeKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#describekey) を使用して KMS キーを表示する。
+ [ListKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeys) を使用して KMS キーのキー ID とキー ARN を取得する
+ [EnableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#enablekey) を使用して KMS キーを有効にする。
+ [DisableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#disablekey) を使用して KMS キーを無効にする

のすべてのサンプルコード AWS SDK for PHP は[GitHub で入手できます](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)。

## 認証情報
<a name="examplecredentials"></a>

サンプルコードを実行する前に、「」の説明に従って AWS 認証情報を設定します[AWS SDK for PHP バージョン 3 AWS を使用した での認証](credentials.md)。次に AWS SDK for PHP、「」の説明に従って をインポートします[AWS SDK for PHP バージョン 3 のインストール](getting-started_installation.md)。

 AWS Key Management Service (AWS KMS) の使用の詳細については、「 [AWS KMS デベロッパーガイド](https://docs.aws.amazon.com/kms/latest/developerguide/)」を参照してください。

## KMS キーを作成する
<a name="create-a-cmk"></a>

[KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)を作成するには、[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) オペレーションを使用します。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

//Creates a customer master key (CMK) in the caller's AWS account.
$desc = "Key for protecting critical data";

try {
    $result = $KmsClient->createKey([
        'Description' => $desc,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## データキーを生成する
<a name="generate-a-data-key"></a>

データ暗号化キーを生成するには、[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) オペレーションを使用します。このオペレーションでは、作成されるデータキーのプレーンテキストおよび暗号化されたコピーが返されます。データキーを生成する AWS KMS key を指定します。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$keySpec = 'AES_256';

try {
    $result = $KmsClient->generateDataKey([
        'KeyId' => $keyId,
        'KeySpec' => $keySpec,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## KMS キーを表示する
<a name="view-a-cmk"></a>

KMS キーの Amazon リソースネーム (ARN) および[キーの状態](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)を含む KMS キーについての詳細を取得するには、[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) オペレーションを使用します。

 `DescribeKey` はエイリアスを取得しません。エイリアスを取得するには、 [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) オペレーションを使用します。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->describeKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## KMS キーのキー ID およびキー ARN を取得する
<a name="get-the-key-id-and-key-arns-of-a-cmk"></a>

KMS キーの ID と ARN を取得するには、[ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) オペレーションを使用します。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$limit = 10;

try {
    $result = $KmsClient->listKeys([
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## KMS キーを有効にする
<a name="enable-a-cmk"></a>

無効になっている KMS キーを有効にするには、[EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html) オペレーションを使用します。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->enableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## KMS キーを無効にする
<a name="disable-a-cmk"></a>

KMS キーを無効にするには、[DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html) オペレーションを使用します。KMS キーを無効にすると、使用されなくなります。

 **インポート** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **サンプルコード** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->disableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```