問題タブ [amazon-kms]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - "s3:x-amz-server-side-encryption": "aws:kms" に一致する拒否条件を持つポリシーを持つ AWS コンソールを使用して、ファイルを s3 バケットにアップロードします。
SSE-KMS としてデフォルトの暗号化が有効になっている S3 バケットにファイルをアップロードしようとしていますが、AWS コンソールを使用してバケット ポリシーへの拒否ステートメントを使用していますが、アクセス拒否エラーが発生します。バケット ポリシーから拒否条件を削除すると、AWS コンソールを使用してファイルを S3 にアップロードできます。
これは aws cli を使用して渡すことで実現できることは理解していますが、 AWS コンソール--sse aws:kms --sse-kms-key-id <kms-key-id>
からファイルをアップロードする方法はありますか?
バケット ポリシー -->
KMS ポリシー -->
IAM ロール ポリシー -->
python - AWS KMS 非対称鍵の署名/検証署名を base64 にエンコードして検証する
AWS KMS 非対称 ECC (ES256) キーを使用して、Python3 で API 呼び出しを使用してトークンに署名および検証しています。応答が返されます
}
AWS CLI を使用すると、応答「署名」は base64 でエンコードされます。
base64.urlsafe_b64encode(string)
Python3 で API 応答を使用して「署名」をbase64 エンコードしようとすると、署名を検証できません。私が受け取るエラーの例を次に示します。
Verify 操作の呼び出し時にエラー (InvalidKeyUsageException) が発生しました: asn1: 構造エラー: タグが一致しません (16 vs {class:1 tag:2 length:39 isCompound:true}) {optional:false explicit:false application:false private:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false} ecdsaSignature @2
API から返された「署名」バイト文字列を base64 でエンコードし、検証できるようにするにはどうすればよいですか?
アップデート:
base64.b4encode
代わりに更新するとbase64.urlsafe_encode
、同じ結果が得られます。
ログメッセージは次を返します:
{"asctime": "2021-04-03 19:40:27,593", "levelname": "INFO", "name": "util.sign", "lineno": 214, "message": null, "env ": "local", "KeyId": "arn:aws:kms:us-east-1:000000000000:key/309d8dc5-409e-4f57-96a8-c71223c84dc2", "署名": "b'0E\x02!\ x00\xcc\x82\xf4$@?\x9e\n\xd7$\x94\x9f.\x1d5\x19{W\x1e\xcff\x8b&\xf0\xef\x88\xcf^"\xf6\xa4\x1b \x02 \x0c\x18\xab?\x93\xd5\x88Cx\xf6\x0c\x1b\xcf\xd9\xd9\xd2\xd4"\xcf\x94\xede_>\x8c\x01~J\xea\x0ezB' "、"SigningAlgorithm": "ECDSA_SHA_256"、"ResponseMetadata": {"HTTPStatusCode": 200、"HTTPHeaders": {"content-type": "application/x-amz-json-1.1"、"content-length": "233","connection": "close", "access-control-allow-origin": "*", "access-control-allow-methods": "HEAD,GET,PUT,POST,DELETE,OPTIONS,PATCH", "access -control-allow-headers": "authorization,content-type,content-length,content-md5,cache-control,x-amz-content-sha256,x-amz-date,x-amz-security-token,x -amz-user-agent,x-amz-target,x-amz-acl,x-amz-version-id,x-localstack-target,x-amz-tagging", "access-control-expose-headers": "x-amz-version-id", "date": "Sat, 03 Apr 2021 19:40:27 GMT", "server": "hypercorn-h11"}, "RetryAttempts": 0}}PATCH", "access-control-allow-headers": "authorization,content-type,content-length,content-md5,cache-control,x-amz-content-sha256,x-amz-date,x-amz-セキュリティトークン,x-amz-user-agent,x-amz-target,x-amz-acl,x-amz-version-id,x-localstack-target,x-amz-tagging", "access-control- Exposure-headers": "x-amz-version-id", "date": "Sat, 03 Apr 2021 19:40:27 GMT", "server": "hypercorn-h11"}, "RetryAttempts": 0} }PATCH", "access-control-allow-headers": "authorization,content-type,content-length,content-md5,cache-control,x-amz-content-sha256,x-amz-date,x-amz-セキュリティトークン,x-amz-user-agent,x-amz-target,x-amz-acl,x-amz-version-id,x-localstack-target,x-amz-tagging", "access-control- Exposure-headers": "x-amz-version-id", "date": "Sat, 03 Apr 2021 19:40:27 GMT", "server": "hypercorn-h11"}, "RetryAttempts": 0} }"Sat, 03 Apr 2021 19:40:27 GMT", "server": "hypercorn-h11"}, "RetryAttempts": 0}}"Sat, 03 Apr 2021 19:40:27 GMT", "server": "hypercorn-h11"}, "RetryAttempts": 0}}
エラーの確認:
"stacktrace": "Verify オペレーションの呼び出し時にエラー (InvalidKeyUsageException) が発生しました: asn1: 構造エラー: タグが一致しません (16 vs {class:1 tag:13 length:69 isCompound:false}) {optional:false explicit :false application:false private:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false} ecdsaSignature @2"
client.verify には署名がバイトである必要がありますhttps://boto3.amazonaws.com/v1/documentation/api/1.11.4/reference/services/kms.html#KMS.Client.verify
私がオフのまま.encode()
にすると、同じ結果になります:
"stacktrace": "Verify オペレーションの呼び出し時にエラー (InvalidKeyUsageException) が発生しました: asn1: 構造エラー: タグが一致しません (16 vs {class:1 tag:13 length:69 isCompound:false}) {optional:false explicit :false application:false private:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false} ecdsaSignature @2"
ノート:
base64 エンコーディングなしで client.sign 応答「Signature」を client.verify に渡すと、検証はパスします。