「view this page in B3 βῆτα server」

Revisions №411

branch: rosetta:release 「№411」
Commited by: Jason C. Klima
GitHub commit link: 「62f6a3258646b892」
Difference from previous tested commit:  code diff
Commit date: 2025-10-10 15:25:42
linux.clang linux.gcc linux.srlz mac.clang
debug
release
unit
PyRosetta.unit icc.icc.build.debug mysql postgres mpi mpi.serialization OpenCL build.header build.levels static serialization performance profile m1.clang.python310.release.PyRosetta.MinSizeRel m1.clang.python311.release.PyRosetta.MinSizeRel m1.clang.python312.release.PyRosetta.MinSizeRel m1.clang.python313.release.PyRosetta.MinSizeRel m1.clang.python314.release.PyRosetta.MinSizeRel m1.clang.python39.release.PyRosetta.MinSizeRel mac.clang.python310.release.PyRosetta.MinSizeRel mac.clang.python311.release.PyRosetta.MinSizeRel mac.clang.python312.release.PyRosetta.MinSizeRel mac.clang.python313.release.PyRosetta.MinSizeRel mac.clang.python314.release.PyRosetta.MinSizeRel mac.clang.python38.release.PyRosetta.MinSizeRel mac.clang.python39.release.PyRosetta.MinSizeRel ubuntu.clang.python310.release.PyRosetta.MinSizeRel ubuntu.clang.python311.release.PyRosetta.MinSizeRel ubuntu.clang.python312.release.PyRosetta.MinSizeRel ubuntu.clang.python313.release.PyRosetta.MinSizeRel ubuntu.clang.python314.release.PyRosetta.MinSizeRel ubuntu.clang.python37.release.PyRosetta.MinSizeRel ubuntu.clang.python38.release.PyRosetta.MinSizeRel ubuntu.clang.python39.release.PyRosetta.MinSizeRel m1.clang.cxx11thread.serialization.python310.release.PyRosetta.Release m1.clang.cxx11thread.serialization.python311.release.PyRosetta.Release m1.clang.cxx11thread.serialization.python312.release.PyRosetta.Release m1.clang.cxx11thread.serialization.python313.release.PyRosetta.Release m1.clang.cxx11thread.serialization.python314.release.PyRosetta.Release m1.clang.cxx11thread.serialization.python39.release.PyRosetta.Release m1.clang.python310.release.PyRosetta.Release m1.clang.python311.release.PyRosetta.Release m1.clang.python312.release.PyRosetta.Release m1.clang.python313.release.PyRosetta.Release m1.clang.python314.release.PyRosetta.Release m1.clang.python39.release.PyRosetta.Release mac.clang.cxx11thread.serialization.python310.release.PyRosetta.Release mac.clang.cxx11thread.serialization.python311.release.PyRosetta.Release mac.clang.cxx11thread.serialization.python312.release.PyRosetta.Release mac.clang.cxx11thread.serialization.python313.release.PyRosetta.Release mac.clang.cxx11thread.serialization.python314.release.PyRosetta.Release mac.clang.cxx11thread.serialization.python38.release.PyRosetta.Release mac.clang.cxx11thread.serialization.python39.release.PyRosetta.Release mac.clang.python310.release.PyRosetta.Release mac.clang.python311.release.PyRosetta.Release mac.clang.python312.release.PyRosetta.Release mac.clang.python313.release.PyRosetta.Release mac.clang.python314.release.PyRosetta.Release mac.clang.python38.release.PyRosetta.Release mac.clang.python39.release.PyRosetta.Release ubuntu.clang.cxx11thread.serialization.python310.release.PyRosetta.Release ubuntu.clang.cxx11thread.serialization.python311.release.PyRosetta.Release ubuntu.clang.cxx11thread.serialization.python312.release.PyRosetta.Release ubuntu.clang.cxx11thread.serialization.python313.release.PyRosetta.Release ubuntu.clang.cxx11thread.serialization.python314.release.PyRosetta.Release ubuntu.clang.cxx11thread.serialization.python38.release.PyRosetta.Release ubuntu.clang.cxx11thread.serialization.python39.release.PyRosetta.Release ubuntu.clang.python310.release.PyRosetta.Release ubuntu.clang.python311.release.PyRosetta.Release ubuntu.clang.python312.release.PyRosetta.Release ubuntu.clang.python313.release.PyRosetta.Release ubuntu.clang.python314.release.PyRosetta.Release ubuntu.clang.python37.release.PyRosetta.Release ubuntu.clang.python38.release.PyRosetta.Release ubuntu.clang.python39.release.PyRosetta.Release m1.clang.cxx11thread.serialization.python310.release.PyRosetta.conda.Release m1.clang.cxx11thread.serialization.python311.release.PyRosetta.conda.Release m1.clang.cxx11thread.serialization.python312.release.PyRosetta.conda.Release m1.clang.cxx11thread.serialization.python313.release.PyRosetta.conda.Release m1.clang.cxx11thread.serialization.python314.release.PyRosetta.conda.Release m1.clang.cxx11thread.serialization.python39.release.PyRosetta.conda.Release mac.clang.cxx11thread.serialization.python310.release.PyRosetta.conda.Release mac.clang.cxx11thread.serialization.python311.release.PyRosetta.conda.Release mac.clang.cxx11thread.serialization.python312.release.PyRosetta.conda.Release mac.clang.cxx11thread.serialization.python313.release.PyRosetta.conda.Release mac.clang.cxx11thread.serialization.python314.release.PyRosetta.conda.Release mac.clang.cxx11thread.serialization.python38.release.PyRosetta.conda.Release mac.clang.cxx11thread.serialization.python39.release.PyRosetta.conda.Release ubuntu.clang.cxx11thread.serialization.python310.release.PyRosetta.conda.Release ubuntu.clang.cxx11thread.serialization.python311.release.PyRosetta.conda.Release ubuntu.clang.cxx11thread.serialization.python312.release.PyRosetta.conda.Release ubuntu.clang.cxx11thread.serialization.python313.release.PyRosetta.conda.Release ubuntu.clang.cxx11thread.serialization.python314.release.PyRosetta.conda.Release ubuntu.clang.cxx11thread.serialization.python38.release.PyRosetta.conda.Release ubuntu.clang.cxx11thread.serialization.python39.release.PyRosetta.conda.Release release.PyRosetta.documentation m1.clang.static.release.binary mac.clang.static.release.binary ubuntu.gcc.static.release.binary release.rosetta.documentation release.source scripts.pyrosetta scripts.rosetta.parse scripts.rosetta.validate scripts.rosetta.verify m1.clang.python39.unit util.apps

Adding dask security to PyRosettaCluster (#531) A primary feature of `PyRosettaCluster` is that arbitrary user-provided PyRosetta protocols are pickled, sent over a network, and unpickled, which allows the user to run customized macromolecular design and modeling workflows. If the user is operating `PyRosettaCluster` behind a trusted private network segment (i.e., a firewall), the current implementation is already secure from external threats (such as eavesdropping, tampering or impersonation). However, in cases of running `PyRosettaCluster` without a truly isolated and trusted environment, the `dask` library can be configured to use TLS/SSL communication between network endpoints for authenticated and encrypted transmission of data. This PR aims to integrate Dask's TLS/SSL communication into `PyRosettaCluster`, as well as implement a few additional security measures: 1. Adds a `security` keyword argument to `PyRosettaCluster`, which can accept a `dask.distributed.Security()` object. Alternatively, it accepts a `bool` object, where if `True` we use the `cryptography` package through the `dask` and `dask-jobqueue` APIs to generate a temporary `dask.distributed.Security()` object for the simulation. Because `PyRosettaCluster` supports remote dask worker instantiation via the `dask-jobqueue` module, security is now enabled by default for the use of remote clusters (such as `SLURMCluster`), and thus this PR adds [cryptography](https://pypi.org/project/cryptography/) as a required package for the `pyrosetta.distributed` framework (note that there are very few `cryptography` dependencies, only including `cffi`, and `openssl` which already ships with standard Python installations). 2. Adds a `pyrosetta.distributed.cluster.generate_dask_tls_security()` function, which uses the OpenSSL executable that ships with standard Python installations (due to the native python `ssl` library) to generate a pre-configured `dask.distributed.Security()` object with the necessary key/certificate pairs. 3. Enables Hash-based Message Authentication Code (HMAC)-SHA256 verification of `cloudpickle`d data (including the arbitrary user-provided PyRosetta protocols and task `kwargs`) between network endpoints (including the host node process, each dask worker process, and the `billiard` subprocesses; i.e., client ↔ worker, client ↔ subprocess), where the cryptographic pseudo-random key is sent to dask workers out-of-band using a dask worker plugin. 4. Adds nonce caching on the host node process and all worker processes if security is disabled, with a `max_nonce` keyword argument that allows setting the maximum nonce cache size in each process. Nonces are unique keys added to each distributed message over the network (see the `cryptography` package [Glossary](https://cryptography.io/en/latest/glossary/) for more information), where if the same nonce is encountered twice in the nonce cache, it may indicate a replay attack and the simulation is intentionally terminated for security reasons. Note that nonce caching is disabled if dask security is already enabled, since the nonce caches may add several additional MB of memory per process (which is not much).

...
Test: mac.clang.python314.release.PyRosetta.MinSizeRel

 View log

Loading...

 View log in dialog  View log in log in separate window
Test: m1.clang.python314.release.PyRosetta.Release

 View log

Loading...

 View log in dialog  View log in log in separate window
Test: mac.clang.python314.release.PyRosetta.Release

 View log

Loading...

 View log in dialog  View log in log in separate window
Test: ubuntu.clang.cxx11thread.serialization.python38.release.PyRosetta.Release

 View log

Loading...

 View log in dialog  View log in log in separate window