Tech Summit 2018: クラウドネイティブなセキュアアプリケーションの作り方にPCIDSSを添えて
2018-11-16
azblob://2022/11/11/eyecatch/2018-11-16-tech-summit-ad19-000.jpg

先週はtech summit 2018、お疲れさまでした!

開催期間には、たくさんのセッションを見て回る事を通して様々な先端事例や新しい考え方に触れることができ、新鮮なことだらけの3日間でした。
ここでは、その中で個人的に面白かったものについて、他の方と同じようにこれからブログ数本に分けて投稿していきたいと思います。

さて、今回紹介したいセッションはAD19 App Development
「クラウドネイティブなセキュアアプリケーションの作り方にPCIDSSを添えて」です。
スライドは以下のアドレスに置かれてありますので気になる方はこちらもご覧ください。
Slide Share AD19_冨田・近江_TechSummit2018

このセッションについて一言で要約すると、「セキュアなアプリケーションを作るためにはシステムで何が起こっているか確認できるようにしよう!そのためには、ログを残すこと、認証、認可の仕組みを作ろう!」ということになります。
メインはセキュアなアプリケーションを作るために使えるAzureのサービスの解説ですが、その前にそもそもセキュアとはどういった状態かということやクラウにおけるセキュリティとはといったセキュアなアプリに対する考え方に関する内容まで、幅広くカバーされていました。
以下では特にセッション中に述べられていた、Azureでの機能やリソースでセキュアなアプリケーションを作る方法について説明していきたいと思います。

Azure Security Centerを用いたセキュリティ改善

Azureのダッシュボード内に、「セキュリティセンター」というものがあります。
これは、Azure上にあるリソースのセキュリティ状況を監視してくれるサービスなのですが、特徴的な機能として、「推奨事項」というものがあります。
「推奨事項」では、Azureにあるリソースについて、現在の状態において起きているセキュリティ上の問題を分析し、セキュリティ向上のための推奨事項を示してくれるものです。
例えば、セッション中のデモにおいては、Azureのサブスクリプションの所有者が少なすぎるので二人以上に増やすべきであるとか、SQL serverにおいて現状監査が有効化されていないので監査が有効にされるべきであるなどの指摘がここに表示されていました。
推奨事項においては、このように、現状においてどのような点に問題があり、それを解決するには具体的にどのような操作を行えばよりセキュアにできるかを知ることができます。
また、それぞれのセキュリティ状態にポイントが割り振られており、現状が満点何点中の現状難点であり、どの問題点を解決すれば何点ポイントが向上するかといった表し方でセキュリティ状態を把握することもできます。
現状のAzureでのリソース状態に不安がある場合は試してみてはどうでしょうか?

Azure Security Centerの説明は以下のサイトです。
Azure Security Center

ARMを使ってアクセス制御を行おう

Azure上のリソースについては、RBAC(Role Base Access Control)によってリソースの地区帝の操作を許可したり禁止したりといった設定ができます。
これによって、ある人が操作を行おうとした際、その人がやろうとしている操作が許可されているかどうかを確認してから、許可されていれば操作を実行するといったことが可能になります。
このユーザーへのロールの割り当てや権限の設定はリソース上から設定画面を呼び出すこともできるのですが、Azure PowerShellやCLIを用いて行うこともできます。
これは一つ大きな利点で、というのも、PCIDSS要件においてはアクセス制御の構成基準を作成して保持することが要求されるためです。
PowerShellやCLIでロール割り当てに使用したコードを保存しておけば、構成基準を保持することが可能になりますね。
他にも、Azureのリソースで設定することになるパスワードにはデフォルトパスワードがないため、この点においてもPCIDSSの要件をクリアしていることになります。

ユーザーへのアクセス権の付与の方法のチュートリアルは以下にあります。
チュートリアル: RBAC と Azure PowerShell を使用してユーザーにアクセス権を付与する

Application Insights、Log Analyticsを使い分けてうまくログを取ろう

システムに何が起こっているのかを把握するためには、ログを取る必要があります。
Azureのシステムのログを取るリソースとしては、Application InsightsとLogAnalyticsがあり、これらを効果的に使い分けることで目的に沿ったログ取りを行うことができます。
セッションにおいては、LogAnalyticsは監査に向いており、Application InsightsはLogの集約に向いていると紹介されていました。
このセッションでは、監査に用いるログはLogAnalyticsに保存しようということが繰り返し述べられていました。
というのも、LogAnalyticsにはRBACと紐づいたログの検索ができるためです。 いつだれがどんな権限でどんな操作を行ったかを知るのにはこちらを使います。
一方で、Application Insightsはアプリ用のライブラリであり、そのアプリのリアルタイムでの使用状況の監視に用いられます。
これらをうまく使い分けることで、PCIDSS要件10のアクセス追跡、監視を満たせるアプリケーションを構成することができます。

最後に

Azureでは、セキュアなアプリケーションを作るための仕組みやリソースが色々あります。
セキュアなアプリケーションを作るためにはシステムで何が起こっているか確認できるようにしよう!というのはセッションの最初に述べられていたことですが、Azureにはそれを満たすためのリソースが用意されています。
今回ここで紹介したもののほかにも、多段防御の構成やキーの保護などを行う方法も紹介されており、Azureでアプリケーションを動かすことによって維持できるセキュリティのレベルの高さを感じました。
オンプレミスでサーバーやアプリケーションを動かすことによってかかるコストの一つにセキュリティを保持するコストもあるそうですが、クラウドプラットフォームに移行することでそのコストを抑えられるということも、一つの利点だと感じます。
これらをうまく利用して、セキュアでコスト効率のいいアプリケーションづくりを目指しましょう!