dougong2005 2016-11-17 20:26
浏览 41
已采纳

如何使用Git处理Azure App Services上的机密文件

We have an PHP app, where for encryption of the connection with database we need to provide 3 files that shouldn't be publicly accessible, but should be present on the server to make the DB connection (https://www.cleardb.com/developers/ssl_connections)

Obviously we don't want to store them in the SCM with the app code, so the only idea that comes to my mind is using post-deploy action hook and fetch those files from storage account (with keys and URIs provided in the app parameters).

Is there a nicer/cleaner way to achieve this? :)

Thank you,

  • 写回答

1条回答 默认 最新

  • dongwei4096 2016-11-18 03:31
    关注

    You can try to use Custom Deployment Script to execute additional scripts or command during the deployment task. So you can create a php script whose functionality is to download the certificate files from Blob Storage to server file system location. And then in your PHP application, the DB connection can use these files.

    Following are the general steps:

    1. Enable composer extension in your portal: enter image description here
    2. Install azure-cli module via npm, refer to https://docs.microsoft.com/en-us/azure/xplat-cli-install for more info.
    3. Create deployment script for php via command azure site deplotmentscript --php
    4. Execute command composer require microsoft/windowsazure, make sure you have a composer.json with the storage sdk dependency.
    5. Create php script in your root directory to download flies from Blob Storage(e.g. named run.php):

      require_once 'vendor/autoload.php';
      
      use WindowsAzure\Common\ServicesBuilder;
      use MicrosoftAzure\Storage\Common\ServiceException;
      $connectionString = "<connection_string>";
      $blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);
      
      $container = 'certificate';
      $blobs = ['client-key.pem','client-cert.pem','cleardb-ca.pem'];
      
      foreach($blobs as $k => $b){
          $blobresult = $blobRestProxy->getBlob($container, $b);
          $source = stream_get_contents($blobresult->getContentStream());
          $result = file_put_contents($b, $source);
      }
      
    6. Modify the deploy.cmd script, add santence php run.php under the step KuduSync.
    7. Deploy your application to Azure Web App via Git.

    Any further concern, please feel free to let me know.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?