PutKeyPolicyÚselo con una AWS SDK o CLI - AWS Key Management Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

PutKeyPolicyÚselo con una AWS SDK o CLI

En los siguientes ejemplos de código se muestra cómo se utiliza PutKeyPolicy.

CLI
AWS CLI

Para cambiar la política de claves de una KMS clave

En el siguiente ejemplo de put-key-policy se cambia la política de claves para una clave administrada por el cliente.

Para empezar, cree una política de claves y guárdela en un JSON archivo local. En este ejemplo, el archivo es key_policy.json. También puede especificar la política de claves como un valor de cadena del parámetro policy.

La primera declaración de esta política clave da permiso a la AWS cuenta para usar IAM políticas que controlen el acceso a la KMS clave. La segunda sentencia otorga al test-user usuario permiso para ejecutar los list-keys comandos describe-key y de la KMS tecla.

Contenidos 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 la KMS clave, en este ejemplo se utiliza el identificador de clave, pero también se puede utilizar una claveARN. El comando utiliza el parámetro policy para especificar las políticas de claves. Para indicar que la política se encuentra en un archivo, utiliza el prefijo file:// necesario. Este prefijo es necesario para identificar los archivos de todos los sistemas operativos compatibles. Por último, el comando usa el parámetro policy-name con un valor de default. Si no se especifica ningún nombre de política, el valor predeterminado es default. El único valor válido es default.

aws kms put-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --policy file://key_policy.json

Este comando no produce ninguna salida. Para comprobar que se aplicó el comando, utilice el comando get-key-policy. El siguiente comando de ejemplo obtiene la política de claves para la misma KMS clave. El parámetro output con un valor de text devuelve un formato de texto que es fácil de leer.

aws kms get-key-policy \ --policy-name default \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --output text

Salida:

{ "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 obtener más información, consulte Cambio de una política de claves en la Guía para desarrolladores de AWS Key Management Service.

  • Para API obtener más información, consulte PutKeyPolicyla Referencia de AWS CLI comandos.

PHP
SDK para PHP
nota

Hay más información al respecto GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de 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 obtener más información, consulte PutKeyPolicyla AWS SDK for PHP APIReferencia.

Python
SDKpara Python (Boto3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de 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 obtener más información, consulte PutKeyPolicyla AWS SDKreferencia de Python (Boto3). API

Para obtener una lista completa de guías para AWS SDK desarrolladores y ejemplos de código, consulte. Uso de este servicio con un SDK de AWS En este tema también se incluye información sobre cómo empezar y detalles sobre SDK las versiones anteriores.