大瀧隆太(424)194194件のシェア(すこし話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。データベースやクラウドストレージにアクセスするために、DockerコンテナでパスワードやAPIトークンキーなどのいわゆるクレデンシャル(資格)情報を扱うことがあります。これらの情報の扱い方についていくつかパターンを挙げ、考察してみたいと思います。TL;DR(要点)DockerイメージやDockerfileに埋め込むのはアンチパターンコンテナ実行時に環境変数で渡すのがメジャー。クレデンシャル管理が不要になるわけではないコンテナ実行時に外部から動的取得するのがおすすめ。クラウドのメタデータサーバーの利用がお手軽クレデンシャル情報とはクレデンシャルは、コンテナから外部のデータソースにアクセスするための資格情報を指します。典型的なクレデンシャルとして以下があります。AKIAXXXXYYYYZZZZ一般にこれらの情報が他のユーザーに知られてしまうと、データソースやサービスへの不正アクセスに利用されデータの改ざん・情報漏洩につながるリスクがあり、厳重に管理する必要があります。Dockerイメージ/Dockerfileに埋め込む従来の非コンテナ環境では、アプリケーションのコードや設定ファイルにクレデンシャルを直接記述することが多かったと思います。コンテナ内のファイルに直接記述するのは以下の理由でお勧めできません。*1Wordpressでのクレデンシャル設定例を以下に示します。:このようなベタ書きは避け、なるべく他の方法を検討することをお勧めします。環境変数で渡すDockerでは、環境変数をコンテナのプロセスに渡すことができます。runコマンドで設定します。HubのオフィシャルWordpressイメージから抜粋してみると、ENTRYPOINTで実行されるスクリプト内で環境変数からWordpressの構成ファイル(wp-config.php)にクレデンシャルを書き込んでいる様子がわかります。runコマンドの--envオプションで環境変数を定義、指定します。runのオプションを事前に定義ファイルとして持たせるため、定義ファイルに埋め込むクレデンシャルの管理をどうするかという課題が残ります。}]外部から取得するコンテナ内部やコンテナ定義ファイルへの埋め込みではなく、別の場所にクレデンシャルを保存しコンテナ実行時に動的に取得するのがオススメです。S3などのオブジェクトストアに格納する方法も考えられますが、それはそれでS3へのアクセス権限を考えなければならず、ちょっと敷居が高いかもしれません。そこで手軽に利用できるものとして、クラウドのメタデータサーバーから取得できるインスタンスメタデータがあります。APIへの権限であればIAMロールが利用できます。ユーザーデータは単一のテキストデータなので複数のクレデンシャル情報を渡したい場合、テキストを分割して読むなどコンテナ側での工夫が多少必要です。APIを呼ぶためのサービスアカウントがあります。インスタンスメタデータの限界インスタンスメタデータはインスタンスの単位で設定/取得するので、Dockerコンテナから利用するためには以下の懸念があります。ホストOSとDockerコンテナを区別できず、ホストOS向けのメタデータをコンテナからも取得できてしまうDockerコンテナを区別できないので、全てのコンテナから共通のメタデータが取得できてしまうsこの辺りはDockerコンテナ向けのサービス(ECS/GKE)が各クラウドにあるので、今後の機能拡張に期待したいところです。まとめDockerコンテナでのクレデンシャル情報の設計について、いくつかのパターンを紹介してみました。セキュアで手間のかからないクレデンシャル管理を検討してみてください!おまけEC2/ECS向けに、インスタンスとは異なるIAMロールを発行する構成を考えてみました。#4のLTで発表するので、興味があればこちらのスライドをご覧ください。後日ブログにまとめたいと思います。4,245,088ゲストブロガーです。株式会社ソラコムでソリューションアーキテクトやってます。クラウドの自動化やIoT周りについての記事を書きます。リモート参加もOK〜クラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。〜ITエンジニアのお仕事とホンネ〜1月30日に新卒向けの会社説明会〜ITエンジニアのお仕事とホンネ〜を開催します。クラスメソッドの関連会社であるアノテーション株式会社の研修として依頼を受け、チームと心理的安全性、それに礼節というテーマで話をしてきました。濱田孝治268「ふわわぁ、眠いな。藤井元貴90Gitリポジトリ内を検索する機会はよくあると思います。grepコマンドを使えば、git管理下のファイルのみを対象としてgrepができます。シンプルなコマンドですが、利便性はとても高いと思います。記事2020年01月20日かずえ81速報です。先程大阪リージョン開設予定がアナウンスされました!!以前から大阪ローカルリージョンという色々と制限がついた特殊なリージョンが存在していましたが、それが拡張され、東京リージョンなどと同じ通常のリージョンになります!2021年初頭開設予定です。武田隆志1143このエントリは、2018年、2019年に公開したAWS全サービスまとめの2020年版です。これまではいくつかに分割して公開していましたが、1エントリにまとめてほしいという要望をもらっていたため、今年は1エントリに集約してみました。クラスメソッドの関連会社であるアノテーション株式会社の研修として依頼を受け、チームと心理的安全性、それに礼節というテーマで話をしてきました。CAFEのサービスが「LINEアプリ」として利用できるようになりました。これまではLINEのトークから利用する形でしたが、LINEサービス内から利用できるようになりました。これまでより便利に、シームレスにご利用いただけます。Cafe326件のシェア(そこそこ話題の記事)インフラ未経験の私が内定から入社までに読んだ技術書11冊ブログ記事2020年01月16日Yui326インフラ未経験で入社した私がインフラを勉強するために読んだ技術書11冊を感想とともにまとめました。濱田孝治268「ふわわぁ、眠いな。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。