はじめに
- Custom Speechでのデータセットのアップロードは、1. zip形式でのアップロード、2. 認証などがなくデータセットへパブリックアクセスができるURL経由の2つがあります
- Web上ではどちらでも問題ないのですが、例えばカスタムモデルの開発をすべてREST API経由で行おうとするとzip形式でのアップロードができず、パブリックURLでの方法となってしまい、データセットが外部からアクセスできてしまいます
- 本記事では、この問題を回避するための方法を解説します
やること
- Speechリソースのシステム割り当てマネージドIDを有効にする
- ストレージアカウントへのアクセスを制限する
- Azure Storageファイヤウォールを設定する
- Speechリソースにストレージへのアクセスロールを割り当てる
1. Speechリソースのシステム割り当てマネージドIDを有効にする
システム割り当てマネージドIDを有効にすると、ロールベースのアクセス制御ができるようになりますので、Blob Storageへのアクセスを許可できます。
Azure Portal上で、
- Speechリソースを選択
- 左側の
リソース管理
でID
を選択 -
システムが割り当て済み
タブでオン
を選択
2. ストレージアカウントへのアクセスを制限する
ここで、Azure Blob Storageにアップされているファイルのパブリックアクセスを無効にします。
Azureポータル上で、
- ストレージアカウントを選択
-
設定
グループで構成
を選択 -
BLOBパブリックアクセスを許可する
を無効
にする -
ストレージ アカウント キーへのアクセスを許可する
を無効
に設定 -
保存
を選択
3. Azure Storageファイアウォールを設定する
2の設定でアクセス制限をしましたが、Speechリソースのアクセスは許可したいので、下記の設定を行います。
- ストレージアカウントを選択
-
セキュリティとネットワーク
グループのネットワーク
を選択 -
ファイアウォールと仮想ネットワーク
タブで選択した仮想ネットワークとIPアドレスから有効
を選択 - すべてのチェックボックスのチェックを解除
-
Microsoftネットワークルーティング
が選択されていることを確認 -
リソースインスタンス
セクションでリソースの種類として、Microsoft.CognitiveServices/accounts
を選択(インスタンス名は使用中のSpeechリソース名を選択) -
保存
を選択
4. Speechリソースにストレージへのアクセスロールを割り当てる
ファイアウォールを設定しただけだと、ストレージアカウント内のデータにはアクセスできないため、手順1で作成したマネージドIDに対して、ストレージBLOBデータ閲覧者ロールを割り当てます。
- ストレージアカウントを選択
- 左側の
アクセス制御(IAM)
を選択 -
このリソースへのアクセス件を付与
タイルのロールの割り当てを追加
を選択 -
ロール
でストレージBLOBデータ閲覧者
を選択し、次へ
を選択 -
メンバー
→アクセスの割り当て先
でマネージドID
を選択 - 手順1のマネージドIDを割り当て、
レビューと割り当て
を選択 - 設定を確認したら
レビューと割り当て
を選択
以上の手順で、Speechリソースからストレージアカウントのデータへアクセスできるようになります。