Hi Rae,
I'm a state government employee working with and on CKAN for my agency. We share many of your requirements and I've bumped my forehead many times on the problems you describe.
IMHO CKAN is definitely a viable option. Its API does all you have mentioned, and there are some good R and Python packages to facilitate access.
re website integratione.g
http://data.wa.gov.au/ is an example of a website with a simple redirect to CKAN. This keeps website and CKAN separate and is only a configuration thing at your internal reverse proxy.
Blog post on CKAN and Drupal integration by David Read (CKAN core team):
https://data.blog.gov.uk/2012/09/14/integrating-ckan-and-drupal/
re limiting read access
CKAN is designed to host open data, so out of the box you'll get all data visible to everyone read-only with write permissions limited to maintainers.
You could host CKAN inside your firewall (that's what we do with our highly sensitive, non-public datasets). For this to happen you'll need your IT crew to implement access permissions at the firewall / reverse proxy level. This happens outside of CKAN itself. Currently this is what we do in my agency.
Alternatively, you can limit access to authorised users only - there are many ways to do so, but unless they support "headless authentication" this will break access to the CKAN API (that's the machine-readable data format that scripts and other software uses to talk to CKAN - e.g. visualisations). Customising authentication can happen either outside of CKAN (again a proxy / firewall issue handled by IT) or through CKAN extensions like
https://github.com/NaturalHistoryMuseum/ckanext-ldap (which only limits write access, not read access - your data would still be publicly visible). We tried that, but could not find a way to both limit access to CKAN and not break access to our CKAN API - however, this might be a limitation of how we implemented the user single sign on (we don't support "headless authentication"), your mileage may vary.
re data viz
CKAN's basic visualisations are great for what they do but they are of course limited to the basic use cases. If you need shinier visualisations, your options are:
- have an analyst write a visualisation using live data from your CKAN, e.g. as an RShiny app (
https://shiny.rstudio.com/). This can be done very easily (matter of hours) and is very flexible. We do this a lot. There are fantastic integrations with R, Python, you can also use plain SQL or Javascript - anything an analyst would need is there. Just point your data nerds at the CKAN API and off you go.
- (pay a developer to) develop a CKAN plugin providing the visualisations you need. This is a bit more effort (matter of days to weeks) and less flexible, but more integrated. E.g. there is a CKAN extension to use the absolutely gorgeous mapping software behind
https://nationalmap.gov.au/ (TerriaJS) as previewer for spatial data.
Overall caveat: clean data in, good viz out. Make sure your data is in standard formats (CSV instead of XLS or worse, geojson for spatial data instead of shape files and so on), passes the QA of
http://goodtables.okfnlabs.org/ to save your analysts lots of data cleaning time.
re commercial support
IMHO your crux will be to limit read access to CKAN to logged in users. Experienced third party support providers (see link above) would be best suited to provide options.