SnowPro Advanced: Architect 無料問題 3 / 10 ・ 分野1: Accounts and Security
データベース D1 に GRANT SELECT ON FUTURE TABLES IN DATABASE D1 TO ROLE R1 を設定してある。その後、スキーマ D1.S1 にだけ GRANT INSERT, DELETE ON FUTURE TABLES IN SCHEMA D1.S1 TO ROLE R2 を設定した。D1.S2 は WITH MANAGED ACCESS で作ったスキーマで、スキーマの段の将来の付与は置いていない。このあと S1 と S2 に新しい表を作ったときに付く権限として、公式ドキュメントに合うものはどれか。
- S1 の新しい表に付くのは R2 の INSERT・DELETE だけで、S2 の新しい表には R1 の SELECT が付く
- S1 の新しい表には R2 の INSERT・DELETE だけが付き、管理アクセスの S2 にはデータベースの段の付与が及ばない
- S1 の新しい表には R1 の SELECT と R2 の INSERT・DELETE が付き、S2 の新しい表には R1 の SELECT が付く
- S1 の新しい表には R1 の SELECT と R2 の INSERT・DELETE が付き、管理アクセスの S2 にはデータベースの段の付与が及ばない
正解と解説を見る
正解: A
正解の理由
公式の将来の付与の考慮事項は、同じ型の物について、データベースとそのデータベースの中のスキーマの両方に将来の付与を定義したときは、スキーマの段の付与が優先され、データベースの段の付与は無視されると書いている。付与先が同じロールでも別のロールでも同じである。公式の例も、データベースの段で SELECT を r1 に、スキーマの段で INSERT・DELETE を r2 に与え、そのスキーマに新しい表を作ると r2 の分だけが付くとしている。S1 の新しい表には R2 の INSERT・DELETE だけが付き、R1 の SELECT は付かない。また、データベースの段の将来の付与は、通常のスキーマにも管理アクセスのスキーマにも当たる。S2 にはスキーマの段の将来の付与が無いので、R1 の SELECT が付く。
違う選択肢
「S1 の新しい表には R1 の SELECT と R2 の INSERT・DELETE が付き、S2 の新しい表には R1 の SELECT が付く」… スキーマの段に同じ型の将来の付与があると、そのスキーマではデータベースの段の付与は無視される。両方が重なって付くのではなく、S1 の新しい表に付くのは R2 の INSERT・DELETE だけである。
「S1 の新しい表には R2 の INSERT・DELETE だけが付き、管理アクセスの S2 にはデータベースの段の付与が及ばない」… S1 の扱いは合っているが、S2 が違う。データベースの段の将来の付与は、通常のスキーマにも管理アクセスのスキーマにも当たると公式は書いている。S2 にはスキーマの段の付与が無いので、R1 の SELECT が付く。
「S1 の新しい表には R1 の SELECT と R2 の INSERT・DELETE が付き、管理アクセスの S2 にはデータベースの段の付与が及ばない」… どちらの点も違う。S1 ではスキーマの段が優先されてデータベースの段の R1 の SELECT は無視され、管理アクセスの S2 にはデータベースの段の付与が当たる。
押さえどころ
将来の付与が決めるのは、新しい物に最初に付く権限の組だけである。物ができたあとは、管理者が個々の物に権限を足したり取り消したりできる。スキーマの段に1つでも将来の付与を置くと、そのスキーマの同じ型の物ではデータベースの段の付与が当たらなくなるので、データベースの段で配っていた権限も要るならスキーマの段に書き足す。