AWS Elemental MediaLiveがEC2 Systems Managerと連携していることを確認してパスワード情報をきちんと管理しよう

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。AWS Media Servicesがre:Invent2017で発表されて早3ヶ月、また先月末にはMedia五兄弟すべてのサービスが東京リージョンに来たこともあり、複数のリージョンでリソースを作っては消し作っては消し、、と検証を進めているかと思います。

検証(とそれに伴うリソースの削除)を行っている途中、AWS Elemental MediaLiveで使用する配信先のパスワード情報、具体的にはHLS group destinationのCredentialsのPasswordの格納先について気になりました。マネージメントコンソールの画面でいえば下記の箇所です。[Create AWS Elemental MediaLive parameter.]ボタンでパスワード情報の作成はできても、この情報の管理画面や削除ボタンはぱっと見MediaLiveのマネージメントコンソールから見つかりません。

お恥ずかしながら最初のうちはとりあえず作っておこう、で済ませていたのですが、作っては消し作っては消しを繰り返していくとそうとは行かなくなってきました。きちんと調べるとこのパスワード情報の管理はEC2 Systems Manger Parameter Storeで管理されており、EC2のマネージメントコンソール画面から、またAWS CLIではaws ssmコマンドで管理、操作できることがわかりましたので、本エントリにまとめてみたいと思います。

管理をしないとこんな状況に…

まずは管理をしていなかったMediaLiveのパスワード情報について晒してみたいと思います。悪い例なので本エントリを参照して、真似しないようにしてください!

AWS Media Servicesのリリース当時から使用できたオレゴンリージョンについてはこのような具合です。すべてMediaPackageのパスワードとなり、MediaPackage側を参照すればなんとか確認はできるようにしていましたが… 使っていない既に削除したMediaPackageのパスワード情報が残ってしまっている状態です。

続いて先月使用可能になった東京リージョンです。こちらはオレゴンリージョンと比べると数は少ないのですが… 我ながら命名規則がイケていないですね。日付を先にするのか後にするのか… また「20180228-MediaLiveChannel」についてはMediaPackageで発行されたパスワードであることを示したいのにMediaPackageという文字列を入れ忘れ、代わりにMediaLiveという文字列を入れてしまったという、悲しい状況でした…

このような管理されておらず、古い情報が残っていたり、命名規則がバラバラでどれがどう対応しているかひと目でわからない状態、良くないですね… ということで、改めてこのパスワード情報がどこで管理されているか確認し、状況を改めて行きたいと思います。

管理するためのキーワードは「Password」と書かれている部分の真下、ラジオボタンの上に表示されている以下の文言です。

Retrieves the password that is stored in the specified parameter in Amazon EC2 Systems Manager Parameter Store.

つまり、Amazon EC2 Systems Managerのパラメータストアで管理されている、ということですね。ということで、Amazon EC2 Systems Managerのパラメータストアについて確認していきます。

Amazon EC2 Systems Manager パラメーターストア

Amazon EC2 Systems Managerはre:Invent2016で発表された新機能です。その機能の1つとしてパラメータストアというものがあります。

AWS Systems Manager ユーザーガイドから概要を抜粋します。

AWS Systems Manager パラメータストア は、設定データ管理と機密管理のための安全な階層型ストレージを提供します。パスワード、データベース文字列、ライセンスコードなどのデータをパラメータ値として保存することができます。値はプレーンテキストまたは暗号化されたデータとして保存できます。次に、パラメータの作成時に指定した一意の名前を使用して値を参照できます。スケーラビリティ、可用性、耐久性に優れた パラメータストア は、AWS クラウドによってサポートされています。パラメータストア は、追加料金なしで提供されます。 AWS Systems Manager パラメータストア - AWS Systems Manager

より深く理解するために、下記のDevelopers.IOも参照してみました。AWSのEC2など各リソース上でパスワードを管理するには最適なサービスであることがわかります。

AWS Elemental MediaLiveで使用するパスワード情報を管理する

ということでEC2 Systems Managerパラメータストアを確認してみます。EC2のマネージメントコンソールから、左側の「SYSTEMS MANAGER 共有リソース」の項目を開き、「パラメータストア」を選択します。すると以下のように、これまでMediaLiveのマネージメントコンソールので作成してきたものを含めたパラメータが一覧表示されます。

このマネージメントコンソールから、各パラメータ情報の削除や編集ができます。(ただパラメータ名の編集はできないようなので、MediaLive側で名前を誤って設定してしまった場合は一度削除して、作り直しがよさそうですね。)

またAWS CLIでもaws ssmコマンドでEC2 Systems Managerのパラメータストアの操作が行なえます。parameterと入っているコマンドが該当しそうですね。

aws ssm describe-parametersコマンドとaws ssm get-parameterコマンドの内容を確認してみました。

 $ aws ssm describe-parameters
{
    "Parameters": [
        {
            "KeyId": "alias/aws/ssm",
            "Name": "/medialive/20180222-MediaPackageChannel",
            "LastModifiedDate": 1519286261.807,
            "Version": 1,
            "LastModifiedUser": "arn:aws:iam::123456789012:user/shimizu.toshiya",
            "Type": "SecureString",
            "Description": "Automatically created by AWS Elemental MediaLive"
        },
        {
            "KeyId": "alias/aws/ssm",
            "Name": "/medialive/20180228-MediaLiveChannel",
            "LastModifiedDate": 1519793138.179,
            "Version": 1,
            "LastModifiedUser": "arn:aws:iam::123456789012:user/shimizu.toshiya",
            "Type": "SecureString",
            "Description": "Automatically created by AWS Elemental MediaLive"
        },
        {
            "KeyId": "alias/aws/ssm",
            "Name": "/medialive/MediaPackageChannel-20180228",
            "LastModifiedDate": 1519789435.442,
            "Version": 1,
            "LastModifiedUser": "arn:aws:iam::123456789012:user/shimizu.toshiya",
            "Type": "SecureString",
            "Description": "Automatically created by AWS Elemental MediaLive"
        }
    ]
}
[/text]


 $ aws ssm get-parameters --names "/medialive/20180222-MediaPackageChannel"
{
    "InvalidParameters": [],
    "Parameters": [
        {
            "Version": 1,
            "Type": "SecureString",
            "Name": "/medialive/20180222-MediaPackageChannel",
            "Value": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"            
        }
    ]
}

まとめ

AWS Elemental MediaLiveで作成できるパスワードはEC2 Systems Mangerのパラメータストアで管理されているので、必要なくなったパスワード情報(パラメータ)はきちんと削除して管理しましょう、というエントリでした。

そもそもAWS Elemental MediaLive内でのEC2 Systems Manager パラメータストアの利用ですが、この連携により配信先のパスワードはセキュアに、またパスワードを知る人/知らない人を分けてリソースの操作ができますね。このような連携がAWSの強みであるかと考えます。引き続きAWS Media Servicesの機能の詳細について理解を深めていきたいと思います。