Bot Application のソースコードを GitHub で公開する時に秘匿情報を含めない方法
別に Bot Application に限った話ではないのですけどね。
Microsoft の Bot Framework を使った Bot Application の作成方法は、いくつかWebで公開されていますが、それらに沿って作成したソースコードを GitHub などの誰でも閲覧できるリポジトリで管理・公開すると、本来公開すべきでない以下の情報が含まれてしまいます。
- Bot Directory へ登録する際に発行される「Bot ID」, 「App ID」, 「App Password」
- Azure へ発行する際の設定情報
これらをソースコード管理に含めないようにする方法を紹介します。
「Bot ID」, 「App ID」, 「App Password」 をソースコード管理に含めないようにする
たとえば、
では、BotのIDやパスワードなどを、Web.config
の <app key="BotId"
などに設定するよう書かれています。
実際プロジェクト作成直後の Web.config
を見ても "YourBotID" などと書かれており、「ここに書くのが当然」感を醸し出しています。これがよくない!
<configuration>
<appsettings>
<!-- update these with your BotId, Microsoft App Id and your Microsoft App Password-->
<add key="BotId" value="YourBotID" />
<add key="MicrosoftAppId" value="" />
<add key="MicrosoftAppPassword" value="" />
</appsettings>
: (略)
Web.config
及び Web.Debug.config
, Web.Release.config
は、 ASP.NET の Webアプリケーションに関する設定を記述するもので、ソースコード管理に含めるべき情報です。
ここにIDやパスワードを記述してはいけません
ではどこに記述するかというと、
で紹介されている方法を使って、別のファイルに逃します。
具体的には、
- 新たに
Web.local.config
というファイル(ファイル名は何でもよい)をプロジェクトに追加し、秘匿情報を含む XML のブロックはそちらに記述する -
Web.config
に上記ファイルへの参照を記述する
とします。
Web.local.config
は、 Web.config
などと同じディレクトリに追加し、ビルドアクションを「コンテンツ」とします。
Web.local.config
の内容は以下です。
<appSettings>
<add key="BotId" value="<あならのBOTID>" />
<add key="MicrosoftAppId" value="<あなたのMicrosoftAppId>" />
<add key="MicrosoftAppPassword" value="<あなたのMicrosoftAppPassword>" />
</appSettings>
Web.config
に記述していた <appSettings>
要素を切り出してきた感じですね。
そして、 Web.config
を次のように修正します。
<configuration>
<appSettings file="Web.local.config">
<!-- 秘匿でない設定情報があればここに書く -->
</appSettings>
: (略)
<appSettings file="Web.local.config">
と記述することで、Web.local.config
の内容をここに注入できます。
あとは Web.local.config
を .gitignore
に追加するなどしてソースコード管理対象から除外します。
Web.local.config
が存在しなくてもビルドや実行はできるようですが、初見の人には不親切なので、 README.md
で補足説明をしておくのがよいでしょう。
開発用とプロダクト用で 「Bot ID」, 「App ID」, 「App Password」 を切り替える
前の手順で設定したID、パスワードなどは「開発用」の情報です。
Azureに配置した本番環境では、別のID、パスワードを使用したいケースは普通にあります。
本番環境の設定はAzureポータルから行えます。
この図のように、
- Azure ポータル(https://portal.azure.com/) で、配布した Bot Application(App Service) を開き、さらに「アプリケーション設定」を開きます
- 「アプリ設定」で、 本番用の「Bot ID」, 「App ID」, 「App Password」を追加します
- 最後に「保存」を押します
ここで設定した内容は、配布した Web.config
にある <appSettings>
の内容を上書きします。
Azure へ発行する際の設定情報をソースコード管理に含めないようにする
Visual Studio 2017 は、IDE から Azure への発行ができてとても便利なのですが、発行のための情報も保持してしまうので、その際の情報もソースコード管理に含めるべきではありません。
これらの情報はプロジェクトのディレクトリの Properties\PublishProfiles
というサブディレクトリに、 *.pubxml
, *.pubxml.user
というファイル名で保存されるようなので、このディレクトリ毎、あるいは個別のファイルを .gitignore
に追加すればよいです。
まとめ
-
Web.config
には秘匿情報を書かない -
Web.local.config
を作って、そちらに書く、このファイルはソースコード管理しない - 本番用のIDやパスワードはAzureポータルで設定する
- Azureへ発行する際の設定情報もソースコード管理しない
結果、 .gitignore
に次の2行を追加するとよいです。
<省略>
*.local.config
PublishProfiles/
手前味噌ですが、上記以外の .gitignore
の設定は https://www.gitignore.io/ で "VisualStudio" と検索して生成されるものを使用すると便利です(上の2行が含まれているわけではありません)。
Author And Source
この問題について(Bot Application のソースコードを GitHub で公開する時に秘匿情報を含めない方法), 我々は、より多くの情報をここで見つけました https://qiita.com/amay077/items/0a27994a6026dfd4d211著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .