|
Any proprietary artifacts you deploy to Artifactory are stored within local repositories so that they are available for secured and authorized internal use.
Anyone searching for one of your internal artifacts by name will extract it through Artifactory from the local repository.
However, consider what happens if a request for an internal artifact is inadvertently directed outside of the organization.
Two examples of how this could happen are:
In this case, since Artifactory does not find the requested artifact in a local repository, it continues to search through the remote repositories defined in the system. Artifactory will, in fact, search through all the remote repositories defined in your system before returning "Not found".
This presents a security risk since any request made on a remote repository may be logged exposing all details of the query including the full artifact name which may include sensitive business information.
To avoid exposing sensitive business information as described above, we strongly recommend the following best practices:
|
In a typical scenario, Artifactory will reference large all-purpose repositories such as or Maven Central for resolving artifacts.
In addition, Artifactory may reference any number of additional repositories which may host a more specialized and specific set of of artifacts.
If Artifactory receives a request for a deterministic set of artifacts (e.g. a specific version of an artifact), then it searches through the different repositories according to its resolution order until the artifact is found.
However, if Artifactory receives a request for a non-deterministic set of artifacts ( e.g. all versions of maven-metadata.xml
) then it must search through all of the repositories it references until it can provide a complete response.
In most cases, the majority of artifacts downloaded by an organization will come from one of the large all-purpose repositories, but in non-deterministic requests performance is downgraded because Artifactory continues to search through all the specialized repositories before it can return a response.
To avoid performing needless and wasteful search when responding to non-deterministic requests we strongly recommend that all specialized repositories be configured with an appropriate Include Pattern specifying only the set of artifacts that the organization might need. In this case, non-deterministic requests for artifacts that are typically found in general purpose repositories will skip over the specialized repositories thereby improving performance. |
In addition to the settings above, Local and Remote repositories share the following settings in the type-specific section for relevant package types.
Max Unique Snapshots | Specifies the maximum number of unique snapshots of the same artifact that should be stored. Once this number is reached and a new snapshot is uploaded, the oldest stored snapshot is removed automatically. Blank (default) indicates that there is no limit on the number of unique snapshots. |
Handle Releases | If set, Artifactory allows you to deploy release artifacts into this repository. |
Handle Snapshots | If set, Artifactory allows you to deploy snapshot artifacts into this repository. |