Azure Resource Manager のロック機能

Azrue Resource Manager(ARM)にはリソースロック機能があります。

何をするものですが

ロールベースのアクセス制御(RBAC)は特定ユーザーの操作を制限するものですが、リソースロック機能は管理側ですべてのユーザーにCanNotDelete(削除不可)またはReadOnly(読み取り専用)のどちらかの状態にリソースをロックする機能です。

※ただし現状Azure PowerShellで指定できるのはCanNotDeleteのみっぽいです

削除不可はリソースに対して変更などは可能ですが削除をできなくします。読み取り専用はそのままですね。

ロックを制御できるのは所有者かユーザーアクセス管理者だけになります。

またロックは継承されます。その際、最も厳しいロックの状態が優先されます。(親リソースにReadOnlyが付与されている場合、子リソースにCanNotDeleteを付与してもReadOnlyのほうが強いのでReadOnlyが優先されます)

ロックを制御するには

REST APIかAzure PowerShellを利用します。Azure PowerShellの場合、 New-AzureRmResourceLock を使用します。

> New-AzureRmResourceLock -LockLevel CanNotDelete -LockName samplelock -ResourceName test -ResourceType Microsoft.Network/publicIPAddresses -ResourceGroupName testgroup

確認
Are you sure you want to create the following lock:
/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/testgroup/providers/Microsoft.Network/publicIPAddresses/test/providers/Microsoft.Authorization/locks/samplelock
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y


Name                  : samplelock
ResourceId            : /subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/testgroup/providers/Micros
                        oft.Network/publicIPAddresses/test/providers/Microsoft.Authorization/locks/samplelock
ResourceName          : test
ResourceType          : Microsoft.Network/publicIPAddresses
ExtensionResourceName : samplelock
ExtensionResourceType : Microsoft.Authorization/locks
ResourceGroupName     : testgroup
SubscriptionId        : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Properties            : @{Level=CanNotDelete}
LockId                : /subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/testgroup/providers/Micros
                        oft.Network/publicIPAddresses/test/providers/Microsoft.Authorization/locks/samplelock

これで削除不可になりました。実際に削除してみるとエラーが発生して削除することができません。(サブスクリプションの所有者でも!)

image

ロックを解除(削除)するには Remove-AzureRmResourceLock を使用します。

> Remove-AzureRmResourceLock -LockName samplelock -ResourceName test -ResourceType Microsoft.Network/publicIPAddresses -ResourceGroupName testgroup

その他

ロックはARMテンプレート内でも利用できます。

まとめ

うまく活用して不慮の事故を未然に防ぎましょう。

See Also:

Azure Update (2016.01.23)

Azure SDK 2.8.2 for .NETとかいろいろ。

Azure SDK

Azure SDK 2.8.2 for .NETがリリースされました。

App Service連携部分とかARM Template絡みの操作がよくなってます。接続文字列のセットアップだったり、ARM TemplateをExportできるようになったりとか。

Azure App Service

Azure Batch

Azure Media Services

Azure Search

Application Insights

  • Application Insights Proactive Detection
    • Application Insightsで予防的検出ができるようになりました。特に追加の設定とか不要なようです。
    • ポータル上で是非どうぞ。

Azure Automation

  • Public preview: Automation Graphical Authoring SDK
    • グラフィカルなRunbookを操作するためのSDKです。Azureのポータルからエクスポートしたのを編集したり、作ったものをインポートしたりできます。
    • 使いどころが悩ましい
      image

その他

Azure x Laravel

いろいろ縁がありましてLaravel勉強会でLTしてきました。

ネタ的にはAzure App Service Web Appsの概要と、Azure上でPHP/Laravelを動かすところまでをざっくりまとめてます。
Gitデプロイした後のデプロイスクリプトでちょっとはまったけど問題なく動いてヨカッタヨカッタ。もともとPHP動くしデプロイだけ気を付けたら(仮想アプリケーションのサイトルートをsite\wwwroot\publicにすれば)普通に動きますです。(FTPデプロイだと何も問題ない)

LaravelはComposer使うのですが、Corey Fowler氏が作ったSite Extensionのおかげで超楽ちんでした。ありがたや。

それからはまったポイントですがWeb Appsのプランにもよると思いますがGitデプロイ後、デプロイスクリプト走るんですけどオプティマイズ辺りの処理でタイムアウトしちゃいます。ディスク遅いからなぁ。。こちらに回避方法あるので参考に。

具体的にはcomposer.jsonのpost-install-cmdをからっぽにしてCompiledCommonClasses.phpを追加することぐらいですかね。

当日の資料もこちらに置いておきますので参考まで。

Azure Update (2016.01.18)

前回書いたそばからUpdateありました。

Azure Automation DSC

Azure RemoteApp

OMS

SQL Database

Virtual Machine

  • Helping customers achieve more at the best prices
    • Dv2 (D-Seriesのv2)インスタンスを10%~17%値下げするよという話。詳細は価格表みましょう
    • 2月からかな?
    • まぁAWS EC2の値下げ発表もありましたし。

Azure Storage

Azure AD

Azure Multi-Factor Authentication

  • More ways to purchase Azure Multi-Factor Authentication
    • Azure MFAをボリュームライセンスなどでも買えるようになりました
    • Azure ADの購入方法に合わせた購入オプションという感じですかね。
    • Azure MFAそのものはAzure AD PremiumやEMS、ECS(Enterprise Cloud Suite)の一部として今後も提供です

Subscription

  • Self-service subscription transfer globally available
    • Azureサブスクリプション(従量課金やMSDN特典など)を別のアカウントや別組織に自分で付け直しできる機能がグローバルで利用できるようになりました。(これまではサポートへ連絡して作業してもらう必要があった)

その他

Azure Update (2016.01.14)

あけてました。おめでとうございます。そろそろ新年のUpdateがちらほら出てきたので簡単に。
※いくつかは昨年末に流れてたやつですけど。

Azure Automation

Virtual Machines

  • Static public IP addresses available for Azure virtual machines
    • ARM使った仮想マシンにStaticなパブリックIPアドレスを割り当てられるようになりました。
    • 以前はDynamicなパブリックIPアドレスをNICに割り当ててた感じです
    • ASMなCloud ServicesだとリザーブドIPアドレスとかいうやつの代わりですかね

Azure Site Recovery

DevTest Labs

  • Azure DevTest Labs: January 2016 update
    • 既存のDevTest LabsのVMにアーティファクト(各アプリとかのパッケージみたいなもの)を追加できるようになりました(参考
    • またアーティファクト用のリポジトリも管理できるようになったので独自のや企業内用のクローズドなのも対応できそうですね
    • あとはARMテンプレート対応、Premium Storage対応などです。

Azure Search

Azure Data Lake

API Management

App Service

  • Zend Z-Ray for Azure App Service general availability
    • PHPアプリケーションのプロファイラ等の機能を持ってるZend Z-RayがApp Serviceで使えるようになりました(今まではPreview)
    • App Service Web Appsなどのブレードの設定から簡単に有効化できます

Network

その他

 

そんな感じで2016年もまったりと宜しくお願い致します。

2015年ふりかえり

もう大晦日ですね。2015年もおわりです。雑に振り返ってみたいと思います。

そういえばCh.9に動画あげたんですよ。
image
よかったら見てやってください。実はCh.9に名前出るの初めてじゃないんですが、アレのアレが大人の事情により面倒くさいとかそういう理由で動画がないので実質初めてのようなものです。(結局プロファイル紐づかない様子)

さて適当にAzure絡みのUpdateを中心に振り返りますかね。

続きを読む

Azure Update (2015.12.23)

さぼってました。すみません。

DocumentDB

Mobile Engagement

Azure Data Lake

Service Fabric

StorSimple

Azure App Service Mobile Apps

GAしたよ(前も書いたかな)

Azure Resource Managerまわり

Azure Machine Learning

HDInsight

Virtual Machine

API Management

Web Apps と App Service Environment

Azure Stack

  • Microsoft Azure Stack: Hardware requirements
    • PoCで使う用の推奨/最小ハードウェア構成の話。最低限SLATサポートなHyper-Vが動くデュアルソケット物理12コアCPU、96GBメモリに1OSディスク+4データディスクといった感じ。
    • 細かな制限(現状MPIOやマルチパスはサポートされてないとかいろいろ)あります

Cloud Services

そのほか

Azure Resource Managerのハンズオン

セミナーの詳細よくわかってなかったのですが、ARMの基本的な体験ができるハンズオンが公開されました。

ハンズオンでは最終的にSQL Databaseを使った複数台で負荷分散する仮想マシン上のWebアプリケーションをテンプレートを使ってデプロイという感じです。
ざっくり図にするとこういう感じです。
image

演習で使うテンプレートなどはこちらにおいてます。

まぁ練習用なのですごくシンプルです。最低限のことしかしてません。
演習ではデプロイの方法を学ぶというか触れてもらう意味合いのほうが強いので、テンプレートをゼロから起こしたりといった内容ではありません。あしからず。。

ARMテンプレートのTipsについて

  • Azure リソース マネージャー テンプレートを設計するためのベスト プラクティス
  • テンプレートに利用できる式や関数
  • テンプレート全般
  • テンプレートリンク
    • templateLinkのほかにもパラメーターや変数もリンクできます。活用しましょう。
    • 公式(?)のQuick Templateなどは多用してますね。まぁストレージとか大きなリソース単位で分けておけば再利用しやすいです。
  • copyとcopyindex()
    • 一部リソースプロパティ(ロードバランサーのinboundNatRulesとか)は使えません
    • inboundNatRulesで使えないということは各インスタンスに直接接続するためのRDPの口を用意するのが難しいということです。この場合だと明示的にVM0用、VM1用とべた書きすればもちろんOKですけどありえないですよね。(インスタンス数固定ならまぁ。。。)※まぁそもそもそういうことしないほうがいいよねというのはある
    • ハンズオンではLBしてもいいからとりあえずRDPの口はあけてます。他のインスタンスは多段してね☆
  • apiVersion
    • Scheme
    • 結構はまるポイントです。注意しましょう。
  • タグ
    • タグは活用しましょう。別で書こうと思いますがポリシーとかにも使えるし。
    • あとConcatとか活用しだすとVisual Studioでいじってるときとか結構ひどい見た目になるので、キーがdisplayNameでタグ付けして表示名をつけてあげるといいかと思います。
  • PowerShell DSCの話はざっくりしかしてません(Windowsの場合)
    • 認証情報の渡し方はprotectedStringsとPrivateSettingsRefあたり活用すればいいかと
    • DSC側のConfigrationもだいぶ無茶してる感あります。。本番で使うにはもうちょっときれいにしたほうがいいでしょう。Scriptとか、、、ひどいコードですみません。そのまま使えないことはないですがきれいじゃないなぁ
    • システム全体のオーケストレーションは別途考えてみてください。
    • 今見直したらアプリケーション固めたZipのURLとか決めうちしちゃってるので、ARM Templateから渡すようにしたりとかしておけばよかったですね。
  • リソース固有情報(resourceGroup().idとか)はうまく活用してください。
  • Azureポータル上でもリソースエクスプローラーはあるのですが(参照からどうぞ)、外部のサイトのほうができること多いです。どういうプロパティ・値を指定したらいいのか不明な時は手動でデプロイしてからリソースエクスプローラーでごにょごにょ参照するといいかと思います。
  • AzureResourceVisualizerとか意外と便利かもですね。node.jsでローカルで動かせますよ

あとは何だろう、CloudFormationのTipsなども参考にするといいかもしれませんね。ただまぁJSONをべたべた書くのはなかなか苦行なのでVisual Studio使うのがいいかと思います。。。