AWS iOS SDKをKMSと組み合わせて使用する方法の例やパターンを見つけようとしています。AWS iMS SDK with KMS
ここでのiOS SDKのドキュメント:
https://aws.amazon.com/developers/getting-started/ios/
https://github.com/aws/aws-sdk-ios
はS3とEC2の例で暗示しているように見えるが、どれも任意のKMSの例を隔離しません。
提案?
AWS iOS SDKをKMSと組み合わせて使用する方法の例やパターンを見つけようとしています。AWS iMS SDK with KMS
ここでのiOS SDKのドキュメント:
https://aws.amazon.com/developers/getting-started/ios/
https://github.com/aws/aws-sdk-ios
はS3とEC2の例で暗示しているように見えるが、どれも任意のKMSの例を隔離しません。
提案?
また、これを探しています。 Javascript(ブラウザ、ノード)、Android(Java)、さらにはC++(iOSでは動作するかもしれませんが、してください)のKMS APIを持っています。
ただし、iOS SDKではありません。一口。
AWS S3でAWS KMS CMKを使用してサーバー側の暗号化を検索する場合は、アップロード要求自体で自分のデータに対してサーバー側の暗号化を行う必要があります。
コードは、AWS KMS CMKを使用して、サーバー側の暗号化ではAWS S3に画像をアップロードするためにここにある(SWIFT 3で書かれたコード)
@IBAction func uploadButtonPressed(_ sender: AnyObject) {
if documentImageView.image == nil {
// Do something here
} else {
let image = documentImageView.image! // I picked image from my imageView named as "documentImageView". You can choose from wherever you want.
let fileManager = FileManager.default
let path = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("\(imageName!).jpeg")
let imageData = UIImageJPEGRepresentation(image, 0.99)
fileManager.createFile(atPath: path as String, contents: imageData, attributes: nil)
let fileUrl = NSURL(fileURLWithPath: path)
uploadRequest?.bucket = "S3BucketName"
uploadRequest?.key = "yourImageName.jpeg"
uploadRequest?.contentType = "image/jpeg"
uploadRequest?.body = fileUrl as URL!
uploadRequest?.serverSideEncryption = AWSS3ServerSideEncryption.awsKms
uploadRequest?.ssekmsKeyId = "Your AWS KMS CMK id"
uploadRequest?.uploadProgress = { (bytesSent, totalBytesSent, totalBytesExpectedToSend) -> Void in
DispatchQueue.main.async(execute: {
self.amountUploaded = totalBytesSent. // To show the amount of data uploaded
self.fileSize = totalBytesExpectedToSend
})
}
let transferManager = AWSS3TransferManager.default()
transferManager?.upload(uploadRequest).continue(with: AWSExecutor.mainThread(), withSuccessBlock: { (taskk: AWSTask) -> Any? in
if taskk.error != nil {
// Error
} else {
// Handle success response
}
return nil
})
}
}
注:あなたAWSを提供しなかった場合KMS CMK idをssekmsKeyIdにアップロードすると、IAM固有のデフォルトCMK ID(IAM資格情報を使用してAWS S3にアクセスする場合)またはルート資格情報(AWS S3にアクセスする場合)あなたのルート資格情報を使って)。このデフォルトのCMK idを使用して、CMK IdをssekmsKeyIdプロパティにアップロード要求で指定するまで、これ以上の暗号化/復号化は行われません。
REST APIを使用してURL署名ルートに行きました。 – sparkFinder