Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Snowflake Resource Support #991

Open
jacobcbeaudin opened this issue Apr 15, 2024 · 0 comments
Open

Feature Request: Snowflake Resource Support #991

jacobcbeaudin opened this issue Apr 15, 2024 · 0 comments

Comments

@jacobcbeaudin
Copy link

Introduction

The Diagrams library is a powerful Python tool that allows users to create system architecture diagrams using code. Adding comprehensive support for Snowflake resources will enable users to visually represent their Snowflake data platforms, enhancing communication, planning, and documentation.

This request aims to add support for a comprehensive list of Snowflake resources in the Diagrams library, enhancing its capability to provide a detailed representation of Snowflake environments.

Requested Snowflake Resources

This section outlines the extensive range of Snowflake resources for which support is requested, aiming to enable complete visualization of all aspects of Snowflake environments:

Account Management

Resources related to managing Snowflake accounts, users, and their associated permissions and policies.

  • snowflake_account
  • snowflake_account_parameter
  • snowflake_account_password_policy_attachment
  • snowflake_managed_account
  • snowflake_user
  • snowflake_user_ownership_grant
  • snowflake_user_password_policy_attachment

Data Storage and Processing

Resources representing the core components for storing and processing data within Snowflake, such as databases, schemas, tables, and views.

  • snowflake_database
  • snowflake_schema
  • snowflake_table
  • snowflake_view
  • snowflake_external_table
  • snowflake_stage
  • snowflake_file_format
  • snowflake_materialized_view
  • snowflake_stream
  • snowflake_share

Security and Policy Management

Resources related to managing security, access control, and data governance within Snowflake.

  • snowflake_grant_privileges_to_share
  • snowflake_role
  • snowflake_role_ownership_grant
  • snowflake_grant_account_role
  • snowflake_grant_database_role
  • snowflake_grant_privileges_to_role
  • snowflake_masking_policy
  • snowflake_row_access_policy
  • snowflake_network_policy
  • snowflake_network_policy_attachment

Integration and Automation

Resources enabling integration with external systems and automation of data workflows.

  • snowflake_pipe
  • snowflake_task
  • snowflake_procedure
  • snowflake_function
  • snowflake_alert
  • snowflake_notification_integration
  • snowflake_email_notification_integration
  • snowflake_storage_integration
  • snowflake_oauth_integration
  • snowflake_external_oauth_integration
  • snowflake_saml_integration
  • snowflake_scim_integration
  • snowflake_api_integration

Compute and Usage

Resources for monitoring and managing resource utilization and performance in Snowflake.

  • snowflake_warehouse
  • snowflake_resource_monitor

Other Resources

Additional resources for various Snowflake features and functionalities.

  • snowflake_sequence
  • snowflake_tag
  • snowflake_tag_association
  • snowflake_tag_masking_policy_association

Generic Diagram Symbols

While Snowflake does not provide official icons for these resources like AWS does, using generic diagram symbols would be a good approach for the first version of Snowflake support in the Diagrams library. This will allow users to create meaningful diagrams of their Snowflake architectures even without specific icons for each resource type.

Currently, there are no comprehensive diagramming tools specifically designed for Snowflake. Adding Snowflake support to the Diagrams library, even with generic symbols, would provide a valuable tool for the Snowflake community to visually represent and communicate their architectures.

Snowflake Terraform Provider

All of the mentioned Snowflake resources are documented in the official Snowflake Terraform Provider, which can be found at https://registry.terraform.io/providers/Snowflake-Labs/snowflake/latest/docs. This provider offers a comprehensive set of resources and data sources for managing Snowflake configurations and infrastructures as code.

The Snowflake Terraform Provider documentation can serve as a valuable reference for implementing support for these resources in the Diagrams library. It provides detailed information about each resource, its properties, and usage examples.

Rationale

Support for these resources will allow users to fully represent and manage their Snowflake architecture within the Diagrams library. It will enable detailed visualizations of security configurations, data workflows, and integrations, crucial for effective architecture planning, auditing, and documentation.

Enabling users to diagram their complete Snowflake environment, from data ingestion to storage to analytics, will provide a holistic view that facilitates better design decisions, troubleshooting, and collaboration.

Use Cases

  • Comprehensive Architecture Visualization: Visualize complete Snowflake environments, including data storage, processing pipelines, and security configurations.

  • Security Auditing and Compliance: Diagrammatic representation of roles, policies, and grants to support security assessments and compliance audits. Diagram role hierarchies and privilege grants to assess least-privilege access and maintain a robust security posture.

  • Operational Oversight: Monitor resource usage and integration flows, aiding in operational management and optimization. Visualize data pipelines from staging to transformations to serving analytics, to identify bottlenecks and optimize performance.

  • High Availability and Disaster Recovery: Depict replication and failover architectures across regions/clouds to ensure high availability and disaster recovery.

Conclusion

The inclusion of these resources will significantly enhance the Diagrams library's functionality, providing a valuable tool for Snowflake users to visualize, plan, and manage their data architectures comprehensively. Even with generic diagram symbols in the first version, this addition will address a current gap in the ecosystem and benefit the Snowflake community.

Supporting Documentation

Call to Action

We welcome any feedback on this proposal and invite the community to contribute their perspectives. If you are interested in helping implement support for Snowflake resources, please comment on this issue and let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant