As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Use PutKeyPolicy
com um AWS SDK ou CLI
Os exemplos de código a seguir mostram como usar o PutKeyPolicy
.
- CLI
-
- AWS CLI
-
Para alterar a política de chaves para uma KMS chave
O exemplo de
put-key-policy
a seguir altera a política de chave de uma chave gerenciada pelo cliente.Para começar, crie uma política de chaves e salve-a em um JSON arquivo local. Neste exemplo, o arquivo é
key_policy.json
. Você também pode especificar a política de chave como o valor da string do parâmetropolicy
.A primeira declaração nessa política de chaves dá permissão à AWS conta para usar IAM políticas para controlar o acesso à KMS chave. A segunda instrução dá permissão ao
test-user
usuário para executar oslist-keys
comandosdescribe-key
e na KMS tecla.Conteúdo de
key_policy.json
:{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:DescribeKey", "kms:ListKeys" ], "Resource" : "*" } ] }
Para identificar a KMS chave, este exemplo usa o ID da chave, mas você também pode usar uma chaveARN. O comando usa o parâmetro
policy
para especificar a política de chave. Para indicar que a política está em um arquivo, ela usa o prefixofile://
necessário. Esse prefixo é necessário para identificar arquivos em todos os sistemas operacionais compatíveis. Por fim, o comando usa o parâmetropolicy-name
com um valordefault
. Se não houver nenhum nome de política especificado, o valor padrão serádefault
. O único valor válido édefault
.aws kms put-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --policyfile://key_policy.json
Esse comando não produz nenhuma saída. Use o comando
get-key-policy
para verificar se o comando está em vigor. O comando de exemplo a seguir obtém a política de chaves para a mesma KMS chave. O parâmetrooutput
com o valortext
retorna um formato de texto fácil de ler.aws kms get-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --outputtext
Saída:
{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" }, { "Sid" : "Allow Use of Key", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:user/test-user" }, "Action" : [ "kms:Describe", "kms:List" ], "Resource" : "*" } ] }
Para obter mais informações, consulte Changing a Key Policy no Guia do desenvolvedor do AWS Key Management Service.
-
Para API obter detalhes, consulte PutKeyPolicy
na Referência de AWS CLI Comandos.
-
- PHP
-
- SDK para PHP
-
nota
Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS
. /*** * @param string $keyId * @param string $policy * @return void */ public function putKeyPolicy(string $keyId, string $policy) { try { $this->client->putKeyPolicy([ 'KeyId' => $keyId, 'Policy' => $policy, ]); }catch(KmsException $caught){ echo "There was a problem replacing the key policy: {$caught->getAwsErrorMessage()}\n"; throw $caught; } }
-
Para API obter detalhes, consulte PutKeyPolicyem AWS SDK for PHP APIReferência.
-
- Python
-
- SDKpara Python (Boto3)
-
nota
Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS
. class KeyPolicy: def __init__(self, kms_client): self.kms_client = kms_client @classmethod def from_client(cls) -> "KeyPolicy": """ Creates a KeyPolicy instance with a default KMS client. :return: An instance of KeyPolicy initialized with the default KMS client. """ kms_client = boto3.client("kms") return cls(kms_client) def set_policy(self, key_id: str, policy: dict[str, any]) -> None: """ Sets the policy of a key. Setting a policy entirely overwrites the existing policy, so care is taken to add a statement to the existing list of statements rather than simply writing a new policy. :param key_id: The ARN or ID of the key to set the policy to. :param policy: The existing policy of the key. :return: None """ principal = input( "Enter the ARN of an IAM role to set as the principal on the policy: " ) if key_id != "" and principal != "": # The updated policy replaces the existing policy. Add a new statement to # the list along with the original policy statements. policy["Statement"].append( { "Sid": "Allow access for ExampleRole", "Effect": "Allow", "Principal": {"AWS": principal}, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:DescribeKey", "kms:ReEncrypt*", ], "Resource": "*", } ) try: self.kms_client.put_key_policy(KeyId=key_id, Policy=json.dumps(policy)) except ClientError as err: logger.error( "Couldn't set policy for key %s. Here's why %s", key_id, err.response["Error"]["Message"], ) raise else: print(f"Set policy for key {key_id}.") else: print("Skipping set policy demo.")
-
Para API obter detalhes, consulte a PutKeyPolicyReferência AWS SDK do Python (Boto3). API
-
Para obter uma lista completa de guias do AWS SDK desenvolvedor e exemplos de código, consulteUsar este serviço com um AWS SDK. Este tópico também inclui informações sobre como começar e detalhes sobre SDK versões anteriores.