|
28 | 28 | "* `Online Store Server`: Uses the `Registry Server` to query metadata and is responsible for low-latency serving of features.\n", |
29 | 29 | "* `Offline Store Server`: Uses the `Registry Server` to query metadata and provides access to batch data for historical feature retrieval.\n", |
30 | 30 | "* `Kubernetes` Authentication types for RBAC Configuration for Feast resources.\n", |
31 | | - "* Setting update Feast RBAC based on roles assigned then validating with client example.\n" |
| 31 | + "\n", |
| 32 | + "\n", |
| 33 | + "Additionally, we will cover:\n", |
| 34 | + "* RBAC Configuration with Kubernetes Authentication for Feast resources." |
32 | 35 | ] |
33 | 36 | }, |
34 | 37 | { |
|
298 | 301 | "cell_type": "markdown", |
299 | 302 | "source": [ |
300 | 303 | "## Configure the RBAC Permissions\n", |
301 | | - "we have defined permission in `permissions_apply.py`." |
| 304 | + " As we have created Kubernetes roles in **FeatureStore CR** to manage access control feast objects, they python script permissions_apply.py will add into feature_repo and applied to registered the permission in registry. \n" |
302 | 305 | ] |
303 | 306 | }, |
304 | 307 | { |
305 | 308 | "metadata": { |
306 | 309 | "ExecuteTime": { |
307 | | - "end_time": "2025-03-05T18:49:43.015317Z", |
308 | | - "start_time": "2025-03-05T18:49:42.826986Z" |
| 310 | + "end_time": "2025-03-06T14:04:10.725890Z", |
| 311 | + "start_time": "2025-03-06T14:04:10.571089Z" |
309 | 312 | } |
310 | 313 | }, |
311 | 314 | "cell_type": "code", |
|
318 | 321 | "name": "stdout", |
319 | 322 | "output_type": "stream", |
320 | 323 | "text": [ |
| 324 | + "# Necessary modules for permissions and policies in Feast for RBAC\r\n", |
321 | 325 | "from feast.feast_object import ALL_RESOURCE_TYPES\r\n", |
322 | 326 | "from feast.permissions.action import READ, AuthzedAction, ALL_ACTIONS\r\n", |
323 | 327 | "from feast.permissions.permission import Permission\r\n", |
324 | 328 | "from feast.permissions.policy import RoleBasedPolicy\r\n", |
325 | 329 | "\r\n", |
326 | | - "admin_roles = [\"feast-writer\"]\r\n", |
327 | | - "user_roles = [\"feast-reader\"]\r\n", |
| 330 | + "# Define roles\r\n", |
| 331 | + "admin_roles = [\"feast-writer\"] # Full access (can create, update, delete ) Feast Resources\r\n", |
| 332 | + "user_roles = [\"feast-reader\"] # Read-only access on Feast Resources\r\n", |
328 | 333 | "\r\n", |
| 334 | + "# User permissions (feast_user_permission)\r\n", |
| 335 | + "# - Grants read and describing Feast objects access\r\n", |
329 | 336 | "user_perm = Permission(\r\n", |
330 | 337 | " name=\"feast_user_permission\",\r\n", |
331 | 338 | " types=ALL_RESOURCE_TYPES,\r\n", |
332 | 339 | " policy=RoleBasedPolicy(roles=user_roles),\r\n", |
333 | | - " actions=[AuthzedAction.DESCRIBE] + READ\r\n", |
| 340 | + " actions=[AuthzedAction.DESCRIBE] + READ # Read access (READ_ONLINE, READ_OFFLINE) + describe other Feast Resources.\r\n", |
334 | 341 | ")\r\n", |
335 | 342 | "\r\n", |
| 343 | + "# Admin permissions (feast_admin_permission)\r\n", |
| 344 | + "# - Grants full control over all resources\r\n", |
336 | 345 | "admin_perm = Permission(\r\n", |
337 | 346 | " name=\"feast_admin_permission\",\r\n", |
338 | 347 | " types=ALL_RESOURCE_TYPES,\r\n", |
339 | 348 | " policy=RoleBasedPolicy(roles=admin_roles),\r\n", |
340 | | - " actions=ALL_ACTIONS\r\n", |
| 349 | + " actions=ALL_ACTIONS # Full permissions: CREATE, UPDATE, DELETE, READ, WRITE\r\n", |
341 | 350 | ")\r\n" |
342 | 351 | ] |
343 | 352 | } |
344 | 353 | ], |
345 | | - "execution_count": 159 |
| 354 | + "execution_count": 167 |
346 | 355 | }, |
347 | 356 | { |
348 | 357 | "metadata": { |
|
726 | 735 | { |
727 | 736 | "metadata": {}, |
728 | 737 | "cell_type": "markdown", |
729 | | - "source": "## Next Run Client notebook -> 2-client.ipynb" |
| 738 | + "source": "[Next Run Client notebook](./2-client.ipynb)" |
730 | 739 | } |
731 | 740 | ], |
732 | 741 | "metadata": { |
|
0 commit comments