User Answers

Do not store passwords.

Store password hashes + Unique salt. When entered hash

Check $system.Encryption class for various hashing algorithms.

The only case where you need to store passwords is when they are used to authenticate Cache server against external systems.

In the future please don't combine separate questions into one post.

I am looking for a way to detimerine if a certain namespace is ensemble enabled.

To check that some <namespace> has Ensemble enabled call:

write ##class(%EnsembleMgr).IsEnsembleNamespace(<namespace>)

where <namespace> defaults to current namespace.

Log some information to the console log file with a certain error level.

If you have SSL config named, say, "AWS" try to set SMTP SSLConfiguration setting to "AWS*" (with asterisk on end). It can help.

- If I have a global available in a certain namespace, can I use InterSystems SQL to query those globals?  

- How do existing globals and creating classes work?  Like I have a Person global right now.  Can I turn that into a class and manipulate the data that way?

You'll need class mapping to query globals via SQL. Check article series  The Art of Mapping Globals to Classes by @Brendan Bannon.

Check Dir method of %Net.SSH.SFTP class, it returns directory contents, including sub-directories.

If you're using InterSystems IRIS try this connection string (replacing values with appropriate):

"Driver=InterSystems ODBC Driver;Host=127.0.0.1;Port=56772;Database=USER;UID=myUsername;PWD="

and for Caché/Ensemble try (driver name could be InterSystems ODBC):