はじめに
今回は、Amazon MacieのAWS Organizations連携機能について紹介します。Amazon Macieは機械学習とパターンマッチングを用いて、S3バケット内に含まれる機密データの発見や、不適切なアクセス制御の検知を行うサービスです。Organizationsと連携することで、Organizations配下の複数アカウントのMacieの検知結果を一元的に管理することが可能です。
本稿では、Macieの具体的な利用方法や利用にあたっての注意点を紹介していきます。
Amazon MacieのOrganizations連携機能の利用方法
初めに、MacieのOrganizations連携機能の利用方法を説明します。これまで紹介してきた機能と同様に、委任管理者として別のアカウントを指定することがベストプラクティスとされています。そのため、本稿でも下図の通り、管理アカウント以外をMacieの委任管理者として設定します。
管理アカウントの作業
まずは、管理アカウントで委任管理者の設定を行います。
(1)Organizationsの画面へ遷移します。
(2)サイドメニューから「サービス」をクリックします。
(3)Amazon Macieを見つけ、クリックします。
(4)「信頼されたアクセスを有効にする」をクリックします。
(5)表示されたポップアップで下記のように入力を行い、「信頼されたアクセスを有効にする」ボタンをクリックします。
(6)ステータスが変更されていることを確認します。
(7)「コンソールに移動する」ボタンをクリックし、Macieの画面へ遷移します。
(8)通常使うリージョンが選択されていることを確認し、「ご利用開始にあたって」ボタンをクリックします。
(9)「委任された管理アカウント」に委任管理者として設定するメンバーアカウントのAWSアカウントIDを入力し、「委任」ボタンをクリックします。
(10)表示されたポップアップ画面で「委任」ボタンをクリックします。
(11)指定したAWSアカウントが委任管理者として設定されていることを確認します。
※ Macieはリージョンサービスであるため、リージョンごとに委任管理者を設定する必要があります。
委任管理者アカウントの作業
それでは、実際に委任管理者アカウントで一元的なMacieの管理について確認していきます。
(1)委任管理者アカウントにログインし、Amazon Macieの画面へ移動します。
(2)委任管理者として指定すると、自動的にMacieが有効化されているはずですので、下記のような画面が表示されるでしょう。サイドメニューから「アカウント」をクリックします。
(3)筆者の環境では、Organizationsに追加された新規アカウントに関する設定は下図のように自動でのMacieの有効化は無効、機密データの自動検出は有効となりました。またOrganizations配下にあるAWSアカウントが一覧でExisting accountsとして表示されているかと思います(注記: このデフォルト設定は、AWS Organizationsの設定などによって異なる場合があります)。
(4)委任管理者アカウントでOrganizations配下の既存メンバーアカウントを管理するためには、チェックボックスにチェックを入れたうえで、「アクション」-「メンバーを追加」をクリックします。
(5)選択したメンバーアカウントのステータスが「有効化済み」となることを確認します。筆者の環境では、本操作を行ったタイミングで画像の通りCurrent account(委任管理者自身のアカウント)がリストに追加され、機密データの自動検出も同時に有効となりました。
動作確認
それでは、動作確認をしていきましょう。 本稿では以下の構成で動作確認をしていきます。機密データ検出結果用S3バケットを用意することで、Macie管理アカウントからメンバーアカウントの検出結果の一部をサンプルとして確認できるようになります。
それでは、まず委任管理者アカウントで機密データ検出用S3バケットの設定を行っていきます。
(1)サイドメニューの「検出結果」をクリックし、機密データ検出結果のリポジトリの設定を行います。既存のS3バケットを選択することも可能ですが、必要なバケットポリシーが複雑なため、新規でバケット作成をお勧めします。また、検出結果は暗号化が必須であり、暗号化キーとしてCustomer Managed Key(CMK)の指定が必要です。こちらも新規CMKを作成したうえで、必要な必要とされるキーポリシーを追加することを推奨します。
(2)続いてMacie管理アカウントからメンバーアカウント内のS3バケット内のデータへのアクセスを可能とし、前のステップで設定したS3バケット内に保管されている機密データの検出結果にアクセスするための設定を行います。どのようなAWSリソースが必要とされるかが、公式ドキュメントからは読み取りにくいと思います。この機能を利用するためには、以下のようなIAMリソースの作成が必要です。
(3)事前にMacie管理アカウントでS3オブジェクト参照用のIAMロールを作っておく必要がありますので、IAMロールの作成を先に実施します。こちらの手順のMacie管理アカウントで必要とされるIAMポリシーおよびそれをアタッチしたIAMロールを作成します。
(4)再びMacieの画面へ戻り、サイドメニューから「サンプルを公開」をクリックします。Statusで「Enabled」を選択し、「IAMロールを引き受ける」を選択します。IAMロールを使う方式がセキュリティ上のベストプラクティスとなりますので、原則こちらを利用するようにしてください。IAMロール名は前手順で作成したIAMロール名を入力します。KMSキーは手順1で作成したCMKを指定します。またCMKのキーポリシーでは、こちらの手順の「カスタマーマネージドキーへの同じアカウントのアクセスを許可する」のキーポリシーを事前に追加しておいてください。すべての入力が完了したら「保存」ボタンをクリックします。
(5)「メンバーロールのアクセス許可とCloudFormationテンプレートを表示」ボタンをクリックします。
(6)「テンプレートをダウンロード」ボタンをクリックします。
続いて、メンバーアカウントでIAMロールを作成していきます。
(1)メンバーアカウントでログイン後、CloudFormationのメニューから先ほどダウンロードしたテンプレートファイルを使って、IAMロールを作成します。
これでMacieで機密データの検出ジョブを実行した際に、Macie管理アカウントから、メンバーアカウントの機密データ検出結果を一元的に確認できるようになりました。
今回は、事前に以下のようにテストデータを格納しておきます。
AWSアカウント | テストデータ配置先 | 内容 |
Macie管理アカウント(91xxxxxx) | Macie管理アカウント内のS3バケット | ダミーの運転免許証番号が1件入った1ファイル |
メンバーアカウント(31xxxxxx) | メンバーアカウント内のS3バケット | ダミーの運転免許証番号が2件入った1ファイル |
では、機密データの検知を行うジョブを作成していきます。
(1)委任管理者アカウントでサイドメニューから「ジョブ」をクリックし、「ジョブを作成」ボタンをクリックします。
(2)「特定のバケットを選択」をクリックし、テストデータを入れたバケットを選択し、「次へ」をクリックします。
(3)選択が正しいことを確認して、「次へ」ボタンをクリックします。
(4)今回はテストですので、「ワンタイムジョブ」を選択し、その他の設定は変更せずに、「次へ」ボタンをクリックします。
(5)マネージドデータ識別子のオプションとして「推奨」を選択し、「次へ」ボタンをクリックします。
(6)「カスタムデータ識別子を選択」画面では、何も変更せずに、「次へ」ボタンをクリックします。
(7)「許可リストの選択」画面でも、何も変更せずに、「次へ」ボタンをクリックします。
(8)任意のジョブ名を入力し、「次へ」ボタンをクリックします。
(9)確認画面で推定コストを確認の上、「送信」ボタンをクリックします。
(10)数分待機したうえで、サイドメニューの「検出結果」をクリックすると、先ほどジョブを実行した2つのバケットで検出結果が表示されていることが確認できるはずです。
(11)右ペインの「サンプルを公開」セクションの「確認」リンクをクリックします。
(12)「サンプルを公開」ボタンをクリックします。
(13)少し待つと、具体的に検知されたデータが表示されるようになります。
課題となりやすいポイント
それでは、最後に課題となりやすいポイントについて説明します。
今回は委任管理者を設定し、委任管理者がMacieの管理を行う構成としていますが、この構成では管理アカウントのMacieの有効化やジョブによる機密データのスキャンが可能となってしまいます。管理アカウントの設定を管理アカウント外から変更できてしまうことを禁止したい場合には課題になりやすいでしょう。一律Macieの有効化権限をDenyする制御を入れることは可能ですが、委任管理者での一元管理ができなくなり、利便性が落ちるため、管理アカウントでMacieが有効化された場合はAWS Config等を使って検知するという発見的統制で対処することになります。Macieはスキャン対象のS3バケットを保有するAWSアカウントに課金が発生するため、万が一管理アカウントのMacieが想定外に有効化され、管理アカウントのS3バケットがスキャンされると管理アカウントにMacieの費用が請求されることになります。こうした事態を防ぐためにも、前述のようなMacieの有効化を検知する仕組みを検討ください。
-
本稿で紹介したサンプルの公開機能(Macie管理アカウントからメンバーアカウントの機密データの中身を確認する機能)は、本稿執筆時点で大阪リージョンなど一部のリージョンでは利用できないので、ご注意ください。
アジアパシフィック (大阪) およびイスラエル (テルアビブ) リージョンを除く、 AWS リージョン Macie が現在利用可能なすべての で設定を構成できます。
Macieでデフォルトで用意されている機密データ検知用のルールは、本稿執筆時点では日本語データにほぼ対応していません。本稿の検証では、日本の運転免許証番号を検知することはできましたが、必ずしも想定通りとなるかは保証されませんので、日本特有の機密データの検知に利用する際には、カスタムデータ識別子の利用を検討ください。
まとめ
今回は、Amazon MacieのOrganizations連携ステップと課題となりやすいポイントを詳しく紹介しました。本稿がOrganizations配下のAWSアカウントの運用管理のお役に立てば幸いです。