Doc AWS SDK ExamplesWord リポジトリには、さらに多くの GitHub の例があります。 AWS SDK
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SDK または CLI PutKeyPolicy
で使用する
以下のコード例は、PutKeyPolicy
の使用方法を示しています。
- CLI
-
- AWS CLI
-
KMS キーのキーポリシーを変更するには
次の
put-key-policy
の例は、カスタマーマネージドキーのキーポリシーを変更します。開始するには、キーポリシーを作成し、ローカル JSON ファイルに保存してください。この例では、
key_policy.json
がこのファイルです。また、キーポリシーをpolicy
パラメータの文字列値として指定することもできます。このキーポリシーの最初のステートメントは、 AWS アカウントが IAM ポリシーを使用して KMS キーへのアクセスを制御するアクセス許可を付与します。2 番目のステートメントは、KMS キーで
describe-key
およびlist-keys
コマンドを実行するアクセス許可をtest-user
ユーザーに付与します。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" : "*" } ] }
KMS キーを識別するには、この例ではキー ID を使用しますが、キーワードを使用することもできますARN。キーポリシーを指定するために、このコマンドは
policy
パラメータを使用します。ポリシーがファイル内にあることを示すには、必要なfile://
プレフィックスを使用します。このプレフィックスは、サポートされているすべてのオペレーティングシステムでファイルを識別するために必要です。最後に、コマンドは値がdefault
のpolicy-name
パラメーターを使用します。ポリシー名を指定しない場合、デフォルト値はdefault
となります。唯一の有効な値はdefault
です。aws kms put-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --policyfile://key_policy.json
このコマンドでは、出力が生成されません。コマンドが有効であることを確認するには、
get-key-policy
コマンドを使用します。次のコマンド例では、同じ KMS キーのキーポリシーを取得します。値がtext
のoutput
パラメータは、読みやすいテキスト形式を返します。aws kms get-key-policy \ --policy-name
default
\ --key-id1234abcd-12ab-34cd-56ef-1234567890ab
\ --outputtext
出力:
{ "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" : "*" } ] }
詳細については、「AWS Key Management Service デベロッパーガイド」の「キーポリシーの変更」を参照してください。
-
API の詳細については、AWS CLI 「 コマンドリファレンス」のPutKeyPolicy
」を参照してください。
-
- PHP
-
- PHP に関する SDK
-
注記
GitHub には他にもあります。用例一覧を検索し、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; } }
-
API の詳細については、PutKeyPolicy AWS SDK for PHP リファレンスの API を参照してください。
-
- Python
-
- Python 用 SDK (Boto3)
-
注記
GitHub には他にもあります。用例一覧を検索し、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.")
-
API の詳細については、PutKeyPolicy for Python (Boto3) Word リファレンス」を参照してください。 AWS SDK API
-