はじめに
Amazon Macieを体験する機会があったので備忘のために。
気になっていたポイントは下記の2つ。
- 暗号化されたS3のデータをどうやってチェックできるのか
- 日本語で書かれた日本の個人情報でもチェックできるのか
Macieとは
S3の中に個人情報などの機密データが入ってないかチェックするサービス。
暗号化されたS3のデータをどうやってチェックできるのか
S3に配置したデータは暗号化されています。とくにカスタマキーで暗号化した場合、Macieといえども中身を見られないはず。一体どうやって?
日本語で書かれた日本の個人情報でもチェックできるのか
こんな個人情報が検出できればありがたい。下記のようなjsonファイルを作りました。
{
"name": "源 頼朝",
"phone": "090-1192-1199",
"email": "yoritomo.minamoto@kamakura.jp",
"address": "神奈川県鎌倉市西御門2丁目5",
"postalZip": "248-0004",
"region": "Kanagawa"
}
もうひとつ、クレジットカード番号のサンプルデータです。
{
"cardid": "0001",
"no": "5105105105105100",
"brand": "Mastercard"
}
実験したこと
カスタマー管理キーで暗号化したS3に個人情報やクレジットカード情報を入れて、Macieで検出を試みます。
KMSでカスタマー管理キーを作成する
S3を暗号化するためKMSで下記のようなキーを作成します。
設定 | 設定値 |
---|---|
キーのタイプ | 対象 |
キーの使用法 | 暗号化および複合化 |
KMSでMacie向けのキーポリシーを作成する。
作成したキーで暗号化されたデータをMacieが読むには複合化が必要になります。Macieが複合化できるようにキーポリシーを次のようにします。ここで一つ目の疑問は解消です。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999999:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Enable explicit permissions for Macie service-role",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999999:role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie"
},
"Action": "kms:Decrypt",
"Resource": "*"
}
]
}
S3のデフォルト暗号化を設定する
S3バケットのプロパティからデフォルト暗号化を上記のKMSキーに設定します。
Macieを有効化
いよいよMacieを設定します。対象のS3バケットを指定して、クロールジョブを作ります。
- Macieを有効化 ボタンを押すと下記のような画面が出てきます。
- 「ジョブを作成」ボタンを押して、「特定のバケットを選択」を選んで先ほどのバケットを選択して「次へ」に進みます。
- [ワンタイムジョブ]を選んで次へ進みます。
- マネージドデータ識別子で[カスタム]を選んでから、全マネージドデータ識別子を選択して次へ進みます。この検証時点では[推奨]で35個、[カスタム]では155個が選択されるので、よりいろいろなパターンを検索できるようです。
- あとは次へ次へと進めてジョブ名をつければOKでした。ワンタイムジョブの場合、作成が終わるとすぐにジョブが動き始めます。
Macieの検証結果を見る
だいたい15分くらいでジョブの実行が完了して、こんな感じでチェック結果が出てきました。
検出された結果は下記のようなものでした。
The S3 object contains financial information such as bank account numbers or credit card numbers.
おわりに
次のようなことがわかりました。
- Amazon Macieは、データを検出するための「識別子」というパターンを提供しており、推奨される識別子やカスタム識別子を利用できます。また、自分で正規表現を用いて識別子を作成することも可能です。
- 日本語の氏名や住所は、Macieの標準の識別子では正確に検出できない場合があります。
クレジットカード番号やAWSアクセスキーのような国際的に共通するデータは、既存の識別子で対応可能です。 - S3バケットがKMSで暗号化されている場合、Macieがデータを解析できるよう、カスタムキーのキーポリシーで複合化を許可する設定が必要です。
- S3に小さなテキストファイルが数個しかない場合でも、検出作業が完了するまで約15分かかることがあります。
触ってみる前のイメージではAIを駆使して魔法のように個人情報を見つけてくれるようなサービスだと思っていましたが、実際のところは検出するための条件(識別子)を作って泥臭く運用するもののようです。
参考文献