The use of defaultCredentials in stream store:
Most open source code that use some sort of authentication
require the use of a built-in credential so that these packages can be run
right out of the box. For example, we have keycloak as an open source
authentication and authorization framework with federation and brokerage
capabilities which can be downloaded and run with a mentioned username and
password and no customizations. A stream store like Pravega can also be
downloaded and run with little or no changes as a standalone application and
with an out of box username and password that has administrator privileges.
When these packages are included within another product,
these hardcoded credentials are allowed to be changed per deployment with the
help of configuration that gets relayed to these packages. The use of a
credential different hardens the product containing these packages in mission
critical deployments.
This administrator credential works independent of any
integrations provided through the product in which these open source packages
are used. Even when the password changes per deployment, it is still good for
administrative usage regardless of what credentials the user may have or the
role with which the user may be accessing the resources of the package.
The difficulty in guessing the password does not take away
the possibilities with the use of the password in both the standalone and
integrated deployments of the package. This provides an alternative for the
users to rule out any issues concerning the privilege with which their actions
are invoked if the privileges are those corresponding to the administrator
credential as opposed to that of the user.
For example, we have
PravegaConfig
pravegaConfig = PravegaConfig.fromParams(ParameterTool.fromArgs(argv));
pravegaConfig.withCredentials(new
DefaultCredentials("well-known-password",
"well-known-username"));
and this allows the user to bypass any constraints
associated with their credentials. Neither the system nor the user interface has
any way of corroborating that the credential supplied is indeed coming from the
user to whom it belongs. The purpose of this article is to suggest the use of
these credentials only as a last resort for troubleshooting purposes with an
explanation of how and why the technique works.
Finally, the use of
built-in credentials cannot work across integrations unless the product as a
whole integrates the use of administrative activities with those of the
packages used within the product.
No comments:
Post a Comment