セキュリティ:Azure管理に対するロールベースのアクセス制御
企業がワークロードをより多くAzureに移動させるに従って、従業員によってアクセスできるクラウドリソースおよび、そのリソースへの実行アクションが制御できる機能に対してリクエストが多くなってきました。今回Azureプラットフォームでのロールベースアクセス制御(RBAC)サポートのプレビューリリースについて発表させていただきます。RBACは、Azureプレビューポータルで利用可能で、ポータルでのアクセスやAzureリソースマネージャーAPIへのアクセスを制御するために使用することができます。このサポートを使用すると、Azureリソースにロールを割り当てることにより、ユーザーおよびグループのアクセスが制限できるようになります。注目事項は以下のとおりです。
- サブスクリプションがAzureのアクセス管理に対する境界線ではなくなりました。4月に、ライフサイクルを共有するリソースをグループ化するコンテナであるリソースグループを導入しました。これで、リソースグループだけでなく特定のWebサイトやVMなどの個々のリソース上へもユーザーのアクセスを許可することができます。
- 現在、ユーザーおよびグループへアクセス権を付与できます。RBACは、Azure Active Directoryがベースになっているので、企業がアクセス管理に対して、すでにAzure Active DirectoryやWindows Server Active Directoryでグループを使用している場合、同じ方法でAzureへのアクセスを管理することができます。
以下は、これがどのように動作するのか、またどのように有効にするのかについての詳細になります。
Azure Active Directory
Azure Active Directoryは、クラウド上のディレクトリサービスです。オンプレミス上の既存のActive Directoryを設定しなくても、Azure Active Directoryで企業のテナントを作成し、ユーザーやグループの定義を行うことができます。また、既存のオンプレミスのActive DirectoryからAzure Active Directoryへユーザーやグループを同期(または連携)したり、Azure、Office 365、その他2000以上のSaaSベースアプリケーションを使用して、クラウド上で自動的に既存のユーザーやグループを利用できるようにすることもできます。
Azureサブスクリプションにアクセスするすべてのユーザーは、Azure Active Directoryに存在していて、サブスクリプションが関連付けられています。これにより、ユーザーの権限を管理したり、ディレクトリでアカウントを無効にすることで、すべてのAzureサブスクリプションへのアクセスを取り消すことができます。
ロール権限
この初回プレビューでは、制限付きアクセス付与の選択肢として、3つのビルトインAzureロールが事前定義されています。
- Ownerは、アクセス管理を含むリソースおよびその子リソースに対してすべての管理操作を実行することができます。
- Contributorは、リソースの作成および削除を含むリソースに対するすべての管理操作を実行することができます。Contributorは他の人へアクセス権を付与することはできません。
- Readerは、リソースおよびその子リソースに対して読み取り権限しかありません。Readerは、秘密を読むことはできません。
RBACモデルでは、Azureサブスクリプションのサービス管理者や共同管理者に設定されているユーザーは、サブスクリプションのOwnerロールに属するものとしてマッピングされます。現在およびプレビューの管理ポータルへのアクセスに変更はありません。
新しいRBACロールに割り当てる追加のユーザーとグループは、これらの権限だけを持っており、新しいAzureプレビューポータルやAzureリソースマネージャAPIを使用してしかAzureリソースを管理することができません。現在のAzure管理ポータルまたは古い管理API経由では(これらはビルトインロールベースセキュリティの概念で構築されていないため)、RBACはサポートされていません。
ロールベースのアクセス許可に基づいたアクセス制限
では、チームが開発でAzureを使用していて、アプリケーションの本番インスタンスをホストすると仮定しましょう。これを行う時、リソースグループを使用して、本番リソースから開発やテストで採用するリソースを分離しておくことと思います。本番の分析データの読み取りおよび確認機能など、チームの全メンバーに対して、Azureサブスクリプションのすべてのリソース読み取り専用ビューを許可して、特定のユーザーには本番リソースへの書き込み/Contributorアクセスを許可したいと思います。これをセットアップする方法を確認していきましょう。
ステップ1:サブスクリプションレベルでロールを設定
まず、サブスクリプションレベルで一部のユーザーにロールをマッピングします。これらは、デフォルトで、Azureサブスクリプション内のすべてのリソースおよびリソースグループに継承されます。これを設定するために、プレビューAzureポータルでBillingブレードを開き、Billingブレードの中でロールを設定したいAzureサブスクリプションを選択します。
次に、開いたサブスクリプションのブレード内で下にスクロールして、ロールタイルを見つけてください。
ロールタイルをクリックすると、デフォルトで提供している事前定義されたロールの一覧(Owner、Contributor、Reader)を示すブレードが表示されます。ロールをクリックすると、ロールに割り当てられたユーザーのリストが表示されます。Addボタンをクリックすると、Azure Active Directoryを検索して、ロールに対するユーザーおよびグループを追加することができます。以下では、デフォルトのReaderロールを開いて、DavidとFredをそこへ追加しています。
これを行うと、DavidとFredはプレビューAzureポータルにログインできるようになり、サブスクリプションに含まれるリソースへの読み取り専用アクセスを持つことになります。しかし、変更の編集や秘密(パスワードなど)を見ることはできません。ディレクトリ内からユーザーやグループを追加すること以外に、上記のInviteボタンを使用すると、Microsoftアカウント(例えば、scott@outlook.com(mailto:scott@outlook.com))を持っていて、ロールもマッピングされているが、現在ディレクトリにはいないユーザーを招待することができます。
ステップ2:リソースレベルでロールを設定
サブスクリプションレベルでデフォルトロールマッピングを定義すると、デフォルトでそこに含まれるすべてのリソースとリソースグループに適用されます。もし個々のリソースだけ(例えば、VM、Webサイト、データベースなど)またはリソースグループレベル(例えば、アプリケーション全体とその中のすべてのリソース)に対してさらに許可の設定を行いたい場合は、個々のリソース/リソースグループブレードを開いて、その中のロールタイルを使用して許可を特定することができます。
例えば、先ほどDavidにはAzureサブスクリプション内のすべてのリソースへのReaderロールアクセスを付与しましたが、サブスクリプション内の個々のVMだけにContributorロールも許可してみましょう。これを行うと、彼はVMの開始/停止および変更を行うことができるようになります。
これを行うため、以下のVM用ブレードを開きました。ブレードを下にスクロールしていくと、VM内にロールタイルが見つかります。ロールタイル内でContributorロールをクリックすると、この特定のVMに対してユーザーをContributorにする(つまり読み取り権限と変更権限を持つ)設定が行えるブレードが立ち上がります。 以下はDavidにこれを追加したところです。
このリソース/リソースグループレベルアプローチを使用することで、リソースへのアクセス制御を非常に細かく設定することができます。
Azureロールベースアクセス制御に対するコマンドラインとAPIアクセス
RBACを使用して設定するアクセスポリシーの施行は、AzureリソースマネージャAPIが行います。Azureプレビューポータルおよびコマンドラインツールは、どちらも管理操作を実行するためにリソースマネージャAPIを使用します。これにより、Azureリソースを管理するために使用しているツールが何であるかにかかわらず、アクセスが一貫して施行されることが保証されます。
今回のリリースで、ロールベースアクセスの設定および制御を自動化することができる多くの新しいPowerShell APIを用意しました。
ロールベースアクセスの詳細
今回のロールベースアクセス制御のプレビューでは、Azureリソースのセキュリティをより柔軟に管理できます。これは簡単に設定することができます。Azure Active Directoryと統合しているため、簡単に同期/連携して、オンプレミス環境にある既存のActive Directory設定と統合することもできます。新しいAzureロールベースアクセス制御サポートは、Azureサブスクリプションや個々のリソースのロールにユーザーやグループを割り当てるのと同じくらい簡単に始められます。RBACの概念と機能の詳細についてはここでご確認いただけます。プレビュー機能へのフィードバックは、ここにくるすべての改善や新機能にとって重要なので、どうか新機能をお試しいただき、フィードバックをいただければと思います。




