虎塚(144)33この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。こんにちは、虎塚です。Serviceは、データを暗号化するためのキーをAWS内で生成、削除、ローテートなどの管理ができるサービスです。このサービスは、キーを管理するユーザと、キーを利用するユーザを別々に定義できるのが特徴です(同じにすることもできます)。この記事では、まず、キーの管理と利用の違いを説明します。次に、アカウントをまたいでキーを利用し、S3にアップロードするオブジェクトを暗号化する例を紹介します。Serviceのキーを別アカウントで使用することは、まさに管理と利用の分離の一例です。アカウントをまたいで、二つの役割を定義するわけですね。キーの管理と利用キーの管理と利用について理解するには、自分で作成したキーのポリシーを見るのが分かりやすいでしょう。Developers.IO)の手順にあったように、ウィザードを使ってキーを作成すると、キーの管理者とキーの利用者を定義する画面が区別されています。これがそっくりポリシーに反映されているためです。Administrators)。Permissions)です。以下の説明では前提として、上記の記事の手順で、東京リージョンに「test-kms」というエイリアスのキーを作成済みであるとします。CLIで、自分が東京リージョンに保有するキーの一覧を見てみます。list-keysFalseKEYSarn:aws:kms:ap-northeast-1:<ACCOUNT-ID>:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX3d0aXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX3d0aKEYSarn:aws:kms:ap-northeast-1:<ACCOUNT-ID>:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX2508XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX2508KEYSarn:aws:kms:ap-northeast-1:<ACCOUNT-ID>:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX9df1XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX9df1KEYSarn:aws:kms:ap-northeast-1:<ACCOUNT-ID>:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX3fe7XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX3fe7KEYSarn:aws:kms:ap-northeast-1:<ACCOUNT-ID>:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX55caXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX55ca5個のキーが表示されました。keyIDもARNも同じ文字列の羅列なので、このままではどれが何のキーか分かりません。エイリアスをつけてキーを作成できるので、エイリアス一覧を取得してみます。TargetKeyIdが表示されました。自分で作成したtest-kmsの他に、作成した覚えのないキーが4個あります。alias/aws/s3です。これらは、AWSによって自動的に作成されたキーです。Serviceでは、AWSが作成するキーとユーザが作成するキーの両方を管理、利用できます。キーのポリシーを確認するキーIDが分かりましたので、キーのポリシーを確認します。次のコマンドを使うと、キーを指定して詳細情報を取得できます。[--generate-cli-skeleton]ここでは、自分で作成した「test-kms」キーのIDを引数に与えて、実行します。]}上記のようなポリシーが取得できました。ステートメントごとに見ていきましょう。「IAMユーザパーミッションの有効化」のステートメントです。APIの実行を許可しています。}次に、「キー管理者のためのアクセス許可」のステートメントです。アカウント内の特定のIAMユーザに、すべてのリソースに対する「キーの管理」操作を許可しています。}それから、「キーの利用許可」のステートメントです。アカウント内の特定のIAMユーザに、すべてのリソースに対する「キーの利用」を許可しています。キーの利用とは、キーを使ったリソースの暗号化や復号などです。}最後に、「永続化リソースの適用許可」のステートメントです。これについての解説はまた別途。キーの利用とは、管理されたキーを使ってリソースの暗号化や復号をすることを指します。これでキーの管理とキーの利用の違いが把握できたと思います。別アカウントからキーを利用するようやく本題ですね。外部のAWSアカウントに対してキーの利用を許可してみましょう。自分で作成したキーに対して、利用を許可するAWSアカウントを指定します。AWSが作成したマスターキーを、他のアカウントに利用させることはできないようです。キーの一覧で、test-kmsキーを選択します。Accounts]セクションで、キーの利用を許可する外部AWSアカウントIDを入力し、保存します。変更されたポリシーを確認する上記によってキーのポリシーがどのように変更されたかを確認しておきましょう。]}最後の2つのステートメントがポイントです。「キーの利用許可」と「永続化リソースの適用許可」のステートメントで、Principalに外部アカウントが追加されました。外部アカウントでは、S3にオブジェクトをPUTする際に、暗号化キーとして上記のキーを選択します。S3のバケットで[Upload]ボタンを押し、適当なファイルをローカルから選択します。key」を選択します。Key]テキストボックスには、デフォルトのマスターキーが表示されています。これは、このアカウントが持つデフォルトのS3用マスターキーです。それから、test-kmsキーを選択するため、デフォルトの設定を変更します。ARN]を選択します。最後に、test-kmsのARNとIDを、「キーのARN/キーID」の形式で入力します。この時、キー管理側のアカウントで、キーのSummaryから値をコピーアンドペーストすると簡単です。別アカウントのキーを利用した暗号化に成功しました。Serviceを少し触ってみました。Service(略してKMS)は、キーの管理と利用という明確な役割の枠組みを用意した点が素晴らしいと思いました。これまでよりも、企業のセキュリティポリシーやアカウント管理ポリシーに則ったキーの管理運用をするために、道具立てが整ってきたのではないでしょうか。KMSには他にも便利な機能がありますので、これからどんどん使っていきます!それでは、また。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。和樹25こんにちは植木和樹@上越オフィスです。Terminalの機能確定版がリリースされたので試してみました。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。川原征大4形態素解析の入門中で、ブログの内容の分析を試しています。作業効率化をしたという話。夏目祐樹391こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介255SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健233こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。