

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan kebijakan AWS KMS utama menggunakan AWS SDK untuk PHP Versi 3
<a name="kms-example-key-policy"></a>

Saat Anda membuat [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), Anda menentukan siapa yang dapat menggunakan dan mengelola kunci KMS itu. Izin ini disertakan dalam dokumen yang disebut kebijakan kunci. Anda dapat menggunakan kebijakan kunci untuk menambah, menghapus, atau mengubah izin kapan saja untuk kunci KMS yang dikelola pelanggan, tetapi Anda tidak dapat mengedit kebijakan kunci untuk kunci KMS AWS terkelola. Untuk informasi selengkapnya, lihat [Otentikasi dan kontrol akses untuk AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html).

Contoh berikut menunjukkan cara:
+ Buat daftar nama-nama kebijakan utama yang menggunakan [ListKeyPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeypolicies).
+ Dapatkan kebijakan utama menggunakan [GetKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#getkeypolicy).
+ Tetapkan kebijakan kunci menggunakan [PutKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#putkeypolicy).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Kredensial
<a name="examplecredentials"></a>

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Daftar semua kebijakan utama
<a name="list-all-key-policies"></a>

Untuk mendapatkan nama kebijakan kunci untuk kunci KMS, gunakan `ListKeyPolicies` operasi. 

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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';
$limit = 10;

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

## Mengambil kebijakan utama
<a name="retrieve-a-key-policy"></a>

Untuk mendapatkan kebijakan kunci untuk kunci KMS, gunakan `GetKeyPolicy` operasi.

 `GetKeyPolicy` memerlukan nama kebijakan. Kecuali Anda membuat kebijakan kunci saat membuat kunci KMS, satu-satunya nama kebijakan yang valid adalah default. Pelajari selengkapnya tentang [kebijakan kunci default](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) di *Panduan AWS Key Management Service Pengembang*.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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';
$policyName = "default";

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

## Menetapkan kebijakan utama
<a name="set-a-key-policy"></a>

Untuk membuat atau mengubah kebijakan kunci untuk kunci KMS, gunakan `PutKeyPolicy` operasi.

 `PutKeyPolicy` memerlukan nama kebijakan. Kecuali Anda membuat Kebijakan Kunci saat membuat kunci KMS, satu-satunya nama kebijakan yang valid adalah default. Pelajari selengkapnya tentang [kebijakan kunci default](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) di *Panduan AWS Key Management Service Pengembang*.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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';
$policyName = "default";

try {
    $result = $KmsClient->putKeyPolicy([
        'KeyId' => $keyId,
        'PolicyName' => $policyName,
        'Policy' => '{ 
            "Version":"2012-10-17",		 	 	  
            "Id": "custom-policy-2016-12-07", 
            "Statement": [ 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal": 
                   { "AWS": "arn:aws:iam::111122223333:user/root" }, 
                "Action": [ "kms:*" ], 
                "Resource": "*" }, 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal":                 
                   { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, 
                "Action": [
                    "kms:Encrypt*",
                    "kms:GenerateDataKey*",
                    "kms:Decrypt*",
                    "kms:DescribeKey*",
                    "kms:ReEncrypt*"
                ], 
                "Resource": "*" }                 
            ]            
        } '
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```