If you are passing the username and password to an external provider, you have no control over it. In addition, how would you practically do this? As an app owner, you do not know users passwords - only they do.
Once it’s in the hands of the external provider, that’s a question only they could answer, but it would be extremely unwise to send plaintext passwords to the external provider in any case.
If you mean between the external provider and Bubble, it’s unlikely to be compromised there as it should be secured by HTTPS.
Yes, if you pass the admin API key to an external provider, they can do anything to your app.
I would do the following:
Create an API Token data type. This should be visible to nobody except admins, using privacy rules. The API token data type just has one field, the ‘token’ (text) and maybe a Type (Option set that tells you what external service uses this API token).
Create a new API Token in the editor, with a random string as the token. Pass this random string to the API.
In the relevant backend workflow, make it publicly accessible without authentication. However, terminate the workflow in the first step only when Do a search for API Tokens:first item is empty, where you’re searching for the API token received by the BE workflow.