演習: MySQL でアクセス許可を構成する
このラボの演習では、RBAC ロールを割り当てて Azure Database for MySQL リソースへのアクセスを制御し、MySQL GRANTS を割り当ててデータベース操作へのアクセスを制御します。
重要
この演習を完了するには、自分の Azure サブスクリプションが必要です。 Azure サブスクリプションを持っていない場合は、Azure の無料試用版を作成してください。
これらの演習を完了するには、次ことが必要です。
- リソース グループを作成済み (モジュール 1 のユニット 5 を参照)。
- Azure Database for MySQL フレキシブル サーバーを作成済み (モジュール 1 のユニット 5 を参照)
- MySQL Workbench をダウンロードおよびインストール済み (モジュール 2 のユニット 5 を参照)
- zoodb データベースを作成済み (モジュール 2 のユニット 5 を参照)。
ヒント
最後のラボの完了後に Azure Database for MySQL サーバーを停止した場合は、ここで再起動します。
Microsoft Entra ID で新しいユーザー アカウントを作成する
Azure portal で、所有者アカウントを使用してサインインし、Microsoft Entra ID に移動します。
[管理] にある [ユーザー] を選択します。
左上の [新しいユーザー] を選択し、[新規ユーザーの作成] を選択します。
[新しいユーザー] ページで、次の詳細を入力し、[作成] を選択します。
- ユーザー名: Holly
- 名前: Holly Rees
- パスワード:[Let me create password] (パスワードを作成する) を選択し、「Pa$$w0rd」と入力します。
ヒント
ユーザーが作成されたら、後でログインに使用できるように、ユーザー プリンシパル名を書き留めておきます。
閲覧者ロールを割り当てる
- Azure portal で、[すべてのリソース] を選択し、対象の Azure Database for MySQL リソースを選択します。
- [アクセス制御 (IAM)] を選択し、[ロールの割り当て] を選択します。 Holly Rees が一覧に表示されません。
- [+ 追加] を選択し、[ロールの割り当ての追加] を選択します。
- [閲覧者] ロールを選択し、[次へ] を選択します。
- メンバーの一覧に Holly Rees を追加し、[次へ] を選択します。
- [レビューと割り当て] を選択します。
閲覧者ロールをテストする
- Azure portal の右上の自分のユーザー アカウントを選択し、[ログアウト] を選択します。
- 書き留めておいたユーザー プリンシパル名とパスワード Pa$$w0rd を使用して、新しいユーザーとしてログインします。 メッセージが表示されたら、既定のパスワードを置き換え、新しいパスワードを書き留めます。
- ポータルのホーム ページで、[すべてのリソース] を選択し、対象の Azure Database for MySQL リソースを選択します。
- [停止] を選択します。 閲覧者ロールではリソースを表示できますが、変更できないため、エラーが表示されます。
共同作成者ロールを割り当てる
- Azure portal の右上の Holly のユーザー アカウントを選択し、[ログアウト] を選択します。
- 元の所有者アカウントを使用してログインします。
- 対象の Azure Database for MySQL リソースに移動し、[アクセス制御 (IAM)] を選択します。
- [+ 追加] を選択し、[ロールの割り当ての追加] を選択します。
- [共同作成者] ロールを選択し、[次へ] を選択します。
- メンバーの一覧に Holly Rees を追加し、[次へ] を選択します。
- [レビューと割り当て] を選択します。
- [ロールの割り当て] を選択します。 これで、Holly Rees に閲覧者ロールと共同作成者ロールの両方が割り当てられました。
共同作成者ロールをテストする
- Azure portal の右上の自分のユーザー アカウントを選択し、[ログアウト] を選択します。
- 書き留めておいたユーザー プリンシパル名とパスワードを使用して、Holly Rees としてログインします。
- ポータルのホーム ページで、[すべてのリソース] を選択し、対象の Azure Database for MySQL リソースを選択します。
- [停止] を選択し、[はい] を選択します。 今回は、Holly に必要なロールが割り当てられているため、サーバーはエラーなしで停止します。
- [開始] を選択して、MySQL リソースで次の手順に進むための準備ができていることを確認します。
- Azure portal の右上の Holly のユーザー アカウントを選択し、[ログアウト] を選択します。
- 元の所有者アカウントを使用してログインします。
Azure Database for MySQL にアクセス権を付与する
MySQL Workbench を開いて、Azure Database for MySQL サーバーに接続します。
クエリ ウィンドウで、次のコードを実行します。 接続に使用しているデモ アカウントを含め、6 個のユーザー アカウントが返されます。
SELECT user, host FROM mysql.user;
新しいユーザーを作成するには、次のコードを実行します
CREATE USER 'dbuser'@'%' IDENTIFIED BY 'Pa$$w0rd';
新しいユーザーを一覧表示するには、上記の SELECT クエリをもう一度実行します。 一覧に dbuser@% ユーザーが表示されます。
新しいユーザーが zoodb データベースのすべてのテーブルのデータに対してクエリを実行して変更できるようにするには、次のコードを実行します。
GRANT SELECT, INSERT, UPDATE, DELETE ON zoodb.* TO 'dbuser'@'%'; FLUSH PRIVILEGES;
新しいユーザーをテストする
MySQL Workbench の [データベース] メニューの [接続の管理] を選択します。
Azure Database for MySQL への既存の接続を選択し、[複製] を選択します。
複製した接続の [ユーザー名] テキストボックスに「dbuser」と入力します。
[パスワード] の横にある [コンテナーに保存] を選択します。
[パスワード] テキストボックスに「Pa$$w0rd」と入力し、[OK] を選択します。
[接続テスト] を選択します。 接続が成功した場合は、[OK] を選択し、[閉じる] を選択します。
[データベース] メニューで [データベースへの接続] を選択します。
[データベースへの接続] ダイアログで、[新しい接続] を選択し、[接続] を選択します。
SELECT 権限があるかどうかをテストするには、クエリ ウィンドウで次のコードを実行します。
SELECT * FROM animal;
UPDATE 特権があるかどうかをテストするには、次のコードを実行します。
UPDATE animal SET Name = "Linda Lioness" WHERE AnimalID = "6"; SELECT * FROM animal;
DROP 特権があるかどうかをテストするには、次のコードを実行します。 エラーが発生した場合は、エラー コードを確認します。
DROP TABLE animal;
GRANT 特権があるかどうかをテストするには、次のコードを実行します。
GRANT ALL PRIVILEGES ON zoodb.* TO 'dbuser'@'%';
これらのテストは、新しいユーザーがデータ操作言語 (DML) コマンドを実行してデータのクエリと変更を行うことはできるが、データ定義言語 (DDL) コマンドを使用してスキーマを変更することはできないことを示しています。 また、新しいユーザーは、アクセス許可を回避するために新しい特権を付与することはできません。